summaryrefslogtreecommitdiffstats
path: root/twin
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-11-21 14:11:16 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2014-11-21 14:11:16 -0600
commit84d7db019508c1185f513e864483fd1fd608c05c (patch)
tree7c9fdfc01ac4a6db18cd3ffd7d9c1973363a289e /twin
parentf685dc8a297618b76d81a192a28f7d586e9a170f (diff)
downloadtdebase-84d7db019508c1185f513e864483fd1fd608c05c.tar.gz
tdebase-84d7db019508c1185f513e864483fd1fd608c05c.zip
Call setActive if new focus window is found and set when rotating focus to next available window
This resolves Bug 2189
Diffstat (limited to 'twin')
-rw-r--r--twin/activation.cpp15
-rw-r--r--twin/bridge.cpp4
-rw-r--r--twin/bridge.h2
-rw-r--r--twin/client.cpp6
-rw-r--r--twin/events.cpp2
5 files changed, 22 insertions, 7 deletions
diff --git a/twin/activation.cpp b/twin/activation.cpp
index 6f79c47cc..d00efc3d6 100644
--- a/twin/activation.cpp
+++ b/twin/activation.cpp
@@ -408,7 +408,9 @@ bool Workspace::activateNextClient( Client* c )
if( c != NULL )
{
if( c == active_client )
+ {
setActiveClient( NULL, Allowed );
+ }
should_get_focus.remove( c );
}
if( focusChangeEnabled())
@@ -442,7 +444,10 @@ bool Workspace::activateNextClient( Client* c )
if( get_focus == NULL )
get_focus = findDesktop( true, currentDesktop());
if( get_focus != NULL )
+ {
requestFocus( get_focus );
+ get_focus->setActive( true, true );
+ }
else
focusToNull();
}
@@ -855,7 +860,7 @@ void Client::setActive( bool act, bool updateOpacity_)
return;
active = act;
workspace()->setActiveClient( act ? this : NULL, Allowed );
-
+
if (updateOpacity_) updateOpacity();
if (isModal() && transientFor())
{
@@ -863,7 +868,7 @@ void Client::setActive( bool act, bool updateOpacity_)
else if (!transientFor()->custom_opacity) transientFor()->setOpacity(options->translucentActiveWindows, options->activeWindowOpacity);
}
updateShadowSize();
-
+
if ( active )
{
Notify::raise( Notify::Activate );
@@ -891,6 +896,7 @@ void Client::setActive( bool act, bool updateOpacity_)
removeShadow();
if (options->shadowEnabled(false))
+ {
if (this == workspace()->topClientOnDesktop(desktop()))
{
/* If the newly deactivated window is the top client on the
@@ -899,10 +905,15 @@ void Client::setActive( bool act, bool updateOpacity_)
* activated window's shadow.
*/
if ((shadowAfterClient = workspace()->activeClient()))
+ {
drawShadowAfter(shadowAfterClient);
+ }
}
else
+ {
drawDelayedShadow();
+ }
+ }
}
if( !active )
diff --git a/twin/bridge.cpp b/twin/bridge.cpp
index 49840e248..f79382457 100644
--- a/twin/bridge.cpp
+++ b/twin/bridge.cpp
@@ -21,6 +21,10 @@ Bridge::Bridge( Client* cl )
{
}
+Bridge::~Bridge()
+ {
+ }
+
#define BRIDGE_HELPER( rettype, prototype, args1, args2, cst ) \
rettype Bridge::prototype ( args1 ) cst \
{ \
diff --git a/twin/bridge.h b/twin/bridge.h
index 0989a64b5..3208b3192 100644
--- a/twin/bridge.h
+++ b/twin/bridge.h
@@ -22,6 +22,8 @@ class Bridge : public KDecorationBridge
{
public:
Bridge( Client* cl );
+ virtual ~Bridge();
+
virtual bool isActive() const;
virtual bool isCloseable() const;
virtual bool isMaximizable() const;
diff --git a/twin/client.cpp b/twin/client.cpp
index a5b5e808b..f32c5064b 100644
--- a/twin/client.cpp
+++ b/twin/client.cpp
@@ -1429,7 +1429,7 @@ void Client::imposeCachedShadow(TQPixmap &pixmap, TQRegion exposed)
QRgb pixel;
double opacity;
int red, green, blue, pixelRed, pixelGreen, pixelBlue;
- int subW, subH, w, h, x, y, zeroX, zeroY;
+ int subW, subH, w, x, y, zeroX, zeroY;
TQImage image;
TQMemArray<TQRect>::Iterator it, itEnd;
TQMemArray<TQRect> rectangles;
@@ -1446,7 +1446,6 @@ void Client::imposeCachedShadow(TQPixmap &pixmap, TQRegion exposed)
yOffset = options->shadowYOffset(isActive());
options->shadowColour(isActive()).rgb(&red, &green, &blue);
w = pixmap.width();
- h = pixmap.height();
itEnd = rectangles.end();
for (it = rectangles.begin(); it != itEnd; ++it) {
@@ -1487,7 +1486,7 @@ void Client::imposeRegionShadow(TQPixmap &pixmap, TQRegion occluded,
QRgb pixel;
double decay, factor, opacity;
int red, green, blue, pixelRed, pixelGreen, pixelBlue;
- int halfMaxIntersects, lineIntersects, maxIntersects, maxY;
+ int lineIntersects, maxIntersects, maxY;
int irBottom, irLeft, irRight, irTop, yIncrement;
int subW, subH, w, h, zeroX, zeroY;
TQImage image;
@@ -1505,7 +1504,6 @@ void Client::imposeRegionShadow(TQPixmap &pixmap, TQRegion occluded,
yOffset = options->shadowYOffset(isActive());
options->shadowColour(isActive()).rgb(&red, &green, &blue);
maxIntersects = thickness * thickness * 4 + (thickness * 4) + 1;
- halfMaxIntersects = maxIntersects / 2;
lineIntersects = thickness * 2 + 1;
factor = maxIntersects / maxOpacity;
decay = (lineIntersects / 0.0125 - factor) / pow((double)maxIntersects, 3.0);
diff --git a/twin/events.cpp b/twin/events.cpp
index c7472cdaf..68c4be55c 100644
--- a/twin/events.cpp
+++ b/twin/events.cpp
@@ -1584,7 +1584,7 @@ bool Client::motionNotifyEvent( Window w, int /*state*/, int x, int y, int x_roo
handleMoveResize( x, y, x_root, y_root );
return true;
}
-
+
void Client::focusInEvent( XFocusInEvent* e )
{
if( e->window != window())