diff options
Diffstat (limited to 'src/mcompositemanager.cpp')
-rw-r--r-- | src/mcompositemanager.cpp | 15 |
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() && |