Fullscreen windows should only be on top when they are in focus. Change
the stacking level temporarily back to WMNormalLevel if the fullscreen
window loses focus due to an alt+tab operation.

Change the stacking level back to WMFullscreenLevel if the fullscreen
window receives the focus again.

Cc: Amadeusz Sławiński <am...@asmblr.net>
Signed-off-by: Bjørn Mork <bj...@mork.no>
---
 src/actions.c | 4 ++++
 src/cycling.c | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/src/actions.c b/src/actions.c
index 63f9f36457ca..bae060183fd1 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -216,6 +216,10 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin)
                        if (wPreferences.highlight_active_app)
                                wApplicationDeactivate(oapp);
                }
+
+               /* reset fullscreen if temporarily removed due to lost focus*/
+               if (wwin->flags.fullscreen)
+                       ChangeStackingLevel(wwin->frame->core, 
WMFullscreenLevel);
        }
 
        wWindowFocus(wwin, focused);
diff --git a/src/cycling.c b/src/cycling.c
index 916d9477804b..94b918326296 100644
--- a/src/cycling.c
+++ b/src/cycling.c
@@ -62,6 +62,10 @@ static WWindow *change_focus_and_raise(WWindow *newFocused, 
WWindow *oldFocused,
        if (!newFocused)
                return oldFocused;
 
+       /* allow the focused window to float on top of a fullscreen window */
+       if (oldFocused->flags.fullscreen)
+               ChangeStackingLevel(oldFocused->frame->core, WMNormalLevel);
+
        wWindowFocus(newFocused, oldFocused);
        oldFocused = newFocused;
 
-- 
2.8.1


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to