diff options
-rw-r--r-- | src/mcompositemanager.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/mcompositemanager.cpp b/src/mcompositemanager.cpp index 15118d3..a54d4c5 100644 --- a/src/mcompositemanager.cpp +++ b/src/mcompositemanager.cpp @@ -1351,6 +1351,10 @@ void MCompositeManagerPrivate::configureWindow(MCompositeWindow *cw, if (e->value_mask & CWSibling) { int above_i = stacking_list.indexOf(e->above); if (above_i >= 0) { + Window d = stack[DESKTOP_LAYER]; + if (d && stacking_list.indexOf(d) > above_i) + // mark iconic if it goes under desktop + setWindowState(e->window, IconicState); if (above_i > win_i) { STACKING_MOVE(win_i, above_i); safe_move(stacking_list, win_i, above_i); @@ -1372,6 +1376,10 @@ void MCompositeManagerPrivate::configureWindow(MCompositeWindow *cw, if (e->value_mask & CWSibling) { int above_i = stacking_list.indexOf(e->above); if (above_i >= 0) { + Window d = stack[DESKTOP_LAYER]; + if (d && stacking_list.indexOf(d) >= above_i) + // mark iconic if it goes under desktop + setWindowState(e->window, IconicState); if (above_i > win_i) { STACKING_MOVE(win_i, above_i-1); safe_move(stacking_list, win_i, above_i - 1); @@ -1383,10 +1391,13 @@ void MCompositeManagerPrivate::configureWindow(MCompositeWindow *cw, } } else { Window parent = transient_for(e->window); - if (parent) + if (parent) { + setWindowState(parent, IconicState); positionWindow(parent, false); - else + } else { + setWindowState(e->window, IconicState); positionWindow(e->window, false); + } } } |