summaryrefslogtreecommitdiff
path: root/src/mcompositemanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mcompositemanager.cpp')
-rw-r--r--src/mcompositemanager.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/mcompositemanager.cpp b/src/mcompositemanager.cpp
index 4901b4b..668407d 100644
--- a/src/mcompositemanager.cpp
+++ b/src/mcompositemanager.cpp
@@ -1818,7 +1818,12 @@ void MCompositeManagerPrivate::mapEvent(XMapEvent *e)
else
item->saveBackingStore(true);
item->setVisible(true);
- item->fadeIn();
+ // TODO: don't show the animation if the window is not stacked on top
+ const XWMHints &h = pc->getWMHints();
+ if (!(h.flags & StateHint) || h.initial_state != IconicState)
+ item->fadeIn();
+ else
+ item->setNewlyMapped(false);
goto stack_and_return;
}
@@ -1836,10 +1841,14 @@ void MCompositeManagerPrivate::mapEvent(XMapEvent *e)
qDebug() << "Composition overhead (new pixmap):"
<< overhead_measure.elapsed();
#endif
- if (item->isAppWindow())
+ const XWMHints &h = pc->getWMHints();
+ if ((!(h.flags & StateHint) || h.initial_state != IconicState)
+ && item->isAppWindow())
item->fadeIn();
- else
+ else {
item->setVisible(true);
+ item->setNewlyMapped(false);
+ }
// the current decorated window got mapped
if (e->window == MDecoratorFrame::instance()->managedWindow() &&