summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKimmo Hämäläinen <kimmo.hamalainen@nokia.com>2010-10-01 14:59:18 +0300
committerKimmo Hämäläinen <kimmo.hamalainen@nokia.com>2010-10-01 14:59:18 +0300
commitef700aae9f02ac91120c32188fa36ae6573a935b (patch)
tree8b35eaac66480d09ad892e523462f5669612a0a9
parentb3e709a5a0cd2b2142dd66396a735a42c207645c (diff)
parentdca3d3ea4880644de2956d1189840101d74ca189 (diff)
Merge branch 'master' of git@gitorious.org:meegotouch/meegotouch-compositor
-rw-r--r--src/mcompositemanager.cpp39
1 files changed, 25 insertions, 14 deletions
diff --git a/src/mcompositemanager.cpp b/src/mcompositemanager.cpp
index ecf215b..aa85f39 100644
--- a/src/mcompositemanager.cpp
+++ b/src/mcompositemanager.cpp
@@ -2293,21 +2293,25 @@ void MCompositeManagerPrivate::rootMessageEvent(XClientMessageEvent *event)
if (event->window != stack[DESKTOP_LAYER])
setExposeDesktop(false);
- Window raise = event->window;
- MCompositeWindow *d_item = COMPOSITE_WINDOW(stack[DESKTOP_LAYER]);
- bool needComp = false;
- if (d_item && d_item->isDirectRendered()
- && raise != stack[DESKTOP_LAYER]) {
- needComp = true;
- enableCompositing(true);
- }
- if (i && i->propertyCache()->windowState() == IconicState) {
- i->setZValue(windows.size() + 1);
- QRectF iconGeometry = i->propertyCache()->iconGeometry();
- i->restore(iconGeometry, needComp);
- set_global_alpha(i->propertyCache()->globalAlpha(),
- i->propertyCache()->videoGlobalAlpha());
+ if (!getTopmostApp()) {
+ // Not necessary to animate if not in desktop view.
+ Window raise = event->window;
+ MCompositeWindow *d_item = COMPOSITE_WINDOW(stack[DESKTOP_LAYER]);
+ bool needComp = false;
+ if (d_item && d_item->isDirectRendered()
+ && raise != stack[DESKTOP_LAYER]) {
+ needComp = true;
+ enableCompositing(true);
+ }
+ if (i && i->propertyCache()->windowState() == IconicState) {
+ i->setZValue(windows.size() + 1);
+ QRectF iconGeometry = i->propertyCache()->iconGeometry();
+ i->restore(iconGeometry, needComp);
+ set_global_alpha(i->propertyCache()->globalAlpha(),
+ i->propertyCache()->videoGlobalAlpha());
+ }
}
+
if (fd.frame)
setWindowState(fd.frame->managedWindow(), NormalState);
else
@@ -2384,6 +2388,13 @@ void MCompositeManagerPrivate::clientMessageEvent(XClientMessageEvent *event)
d_item->setZValue(i->zValue() - 1);
Window lower, topmost = getTopmostApp();
+ if (i->window() != topmost) {
+ /* Request from a background app. Don't do anything,
+ * just make sure the states are not screwed. */
+ i->stopPing();
+ setWindowState(i->window(), IconicState);
+ return;
+ }
if (topmost)
lower = topmost;
else