diff options
author | Kimmo Hämäläinen <kimmo.hamalainen@nokia.com> | 2010-10-01 14:59:18 +0300 |
---|---|---|
committer | Kimmo Hämäläinen <kimmo.hamalainen@nokia.com> | 2010-10-01 14:59:18 +0300 |
commit | ef700aae9f02ac91120c32188fa36ae6573a935b (patch) | |
tree | 8b35eaac66480d09ad892e523462f5669612a0a9 | |
parent | b3e709a5a0cd2b2142dd66396a735a42c207645c (diff) | |
parent | dca3d3ea4880644de2956d1189840101d74ca189 (diff) |
Merge branch 'master' of git@gitorious.org:meegotouch/meegotouch-compositor
-rw-r--r-- | src/mcompositemanager.cpp | 39 |
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 |