summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKimmo Hämäläinen <kimmo.hamalainen@nokia.com>2010-07-22 09:57:42 +0300
committerKimmo Hämäläinen <kimmo.hamalainen@nokia.com>2010-07-22 09:57:42 +0300
commit7184cb3aafca61dc0f6e6ca8d855ee8813db49d0 (patch)
tree86ea07d886c80b51589bc1bc7e38a62d18fda783 /src
parent9fb8f6b57fea420c1440f2d57afe629abcff535e (diff)
Changes: Stack the decorator low when the managed client is iconic.
Diffstat (limited to 'src')
-rw-r--r--src/mcompositemanager.cpp7
-rw-r--r--src/mdecoratorframe.h1
2 files changed, 6 insertions, 2 deletions
diff --git a/src/mcompositemanager.cpp b/src/mcompositemanager.cpp
index 668407d..15d2293 100644
--- a/src/mcompositemanager.cpp
+++ b/src/mcompositemanager.cpp
@@ -2502,13 +2502,16 @@ static int cmp_windows(const void *a, const void *b)
Window w_b = *((Window*)b);
MCompositeWindow *cw_a = comp_man_priv->windows.value(w_a, 0),
*cw_b = comp_man_priv->windows.value(w_b, 0);
+ MDecoratorFrame *deco = MDecoratorFrame::instance();
// a is unused decorator?
if (cw_a->propertyCache()->isDecorator() &&
- !MDecoratorFrame::instance()->managedWindow())
+ (!deco->managedClient() ||
+ deco->managedClient()->propertyCache()->windowState() != NormalState))
return -1;
// b is unused decorator?
if (cw_b->propertyCache()->isDecorator() &&
- !MDecoratorFrame::instance()->managedWindow())
+ (!deco->managedClient() ||
+ deco->managedClient()->propertyCache()->windowState() != NormalState))
return 1;
// a iconified, or a is desktop and b not iconified?
if (cw_a->propertyCache()->windowState() == IconicState ||
diff --git a/src/mdecoratorframe.h b/src/mdecoratorframe.h
index 3b309d9..411be28 100644
--- a/src/mdecoratorframe.h
+++ b/src/mdecoratorframe.h
@@ -46,6 +46,7 @@ public:
* Retuns the window id of the managed window.
*/
Qt::HANDLE managedWindow() const;
+ MCompositeWindow *managedClient() const { return client; }
/*!
* Returns the window id of the decorator window.