This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project wmaker-crm.git.

The branch, next has been updated
       via  5561199c871293cca0b3dc2c6feff0d7783111c6 (commit)
       via  6429847494fbcd84e2bab026c3fd9239c7cf8927 (commit)
      from  b7a1528833cf1abbe33067570f4f0d4a09f80ebc (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://repo.or.cz/wmaker-crm.git/commit/5561199c871293cca0b3dc2c6feff0d7783111c6

commit 5561199c871293cca0b3dc2c6feff0d7783111c6
Author: Bjørn Mork <bj...@mork.no>
Date:   Tue Jul 12 23:49:47 2016 +0200

    wmaker: allow alt+tabbed windows over fullscreen
    
    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>

diff --git a/src/actions.c b/src/actions.c
index e6a91d5..4bc3e07 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 916d947..94b9183 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;
 

http://repo.or.cz/wmaker-crm.git/commit/6429847494fbcd84e2bab026c3fd9239c7cf8927

commit 6429847494fbcd84e2bab026c3fd9239c7cf8927
Author: Bjørn Mork <bj...@mork.no>
Date:   Tue Jul 12 23:49:46 2016 +0200

    wmaker: fix stacking order of dock and fullscreen
    
    This reverts the commits:
     311ab6b08ccf ("Raise fullscreened window")
     a504370f3b27 ("Remove WMFullscreenLevel")
    
    Removing WMFullscreenLevel had the side effect that a dock or panel
    having the _NET_WM_WINDOW_TYPE_DOCK type would stack on top of
    fullscreen windows, obscuring part of them.  This is unwanted. No
    other window should cover a focused fullscreen window:.
    
https://specifications.freedesktop.org/wm-spec/latest/ar01s09.html#STACKINGORDER
    
    Simply raising the fullscreen window to the top of the stack of normal
    windows is not sufficient if there are windows with higher stacking
    levels present.  The separate WMFullscreenLevel is needed.
    
    Cc: Amadeusz Sławiński <am...@asmblr.net>
    Signed-off-by: Bjørn Mork <bj...@mork.no>

diff --git a/src/WindowMaker.h b/src/WindowMaker.h
index fe22a79..ce07d82 100644
--- a/src/WindowMaker.h
+++ b/src/WindowMaker.h
@@ -59,6 +59,7 @@ enum {
        WMSubmenuLevel = 15,
        WMMainMenuLevel = 20,
        WMStatusLevel = 21,
+       WMFullscreenLevel = 50,
        WMModalLevel = 100,
        WMPopUpLevel = 101,
        WMScreensaverLevel = 1000,
diff --git a/src/actions.c b/src/actions.c
index f46e586..e6a91d5 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -727,8 +727,7 @@ void wFullscreenWindow(WWindow *wwin)
 
        wWindowConfigureBorders(wwin);
 
-       ChangeStackingLevel(wwin->frame->core, WMNormalLevel);
-       wRaiseFrame(wwin->frame->core);
+       ChangeStackingLevel(wwin->frame->core, WMFullscreenLevel);
 
        wwin->bfs_geometry.x = wwin->frame_x;
        wwin->bfs_geometry.y = wwin->frame_y;
@@ -752,10 +751,15 @@ void wUnfullscreenWindow(WWindow *wwin)
 
        wwin->flags.fullscreen = False;
 
-       if (WFLAGP(wwin, sunken))
-               ChangeStackingLevel(wwin->frame->core, WMSunkenLevel);
-       else if (WFLAGP(wwin, floating))
-               ChangeStackingLevel(wwin->frame->core, WMFloatingLevel);
+       if (wwin->frame->core->stacking->window_level == WMFullscreenLevel) {
+               if (WFLAGP(wwin, sunken)) {
+                       ChangeStackingLevel(wwin->frame->core, WMSunkenLevel);
+               } else if (WFLAGP(wwin, floating)) {
+                       ChangeStackingLevel(wwin->frame->core, WMFloatingLevel);
+               } else {
+                       ChangeStackingLevel(wwin->frame->core, WMNormalLevel);
+               }
+       }
 
        wWindowConfigure(wwin, wwin->bfs_geometry.x, wwin->bfs_geometry.y,
                         wwin->bfs_geometry.width, wwin->bfs_geometry.height);
diff --git a/src/wmspec.c b/src/wmspec.c
index 9b56f96..0bfc864 100644
--- a/src/wmspec.c
+++ b/src/wmspec.c
@@ -1057,7 +1057,7 @@ static int getWindowLayer(WWindow *wwin)
                if (wwin->transient_for) {
                        WWindow *parent = wWindowFor(wwin->transient_for);
                        if (parent && parent->flags.fullscreen)
-                               layer = WMNormalLevel;
+                               layer = WMFullscreenLevel;
                }
                /* //layer = WMPopUpLevel; // this seems a bad idea -Dan */
        } else if (wwin->type == net_wm_window_type_dropdown_menu) {

-----------------------------------------------------------------------

Summary of changes:
 src/WindowMaker.h |  1 +
 src/actions.c     | 20 ++++++++++++++------
 src/cycling.c     |  4 ++++
 src/wmspec.c      |  2 +-
 4 files changed, 20 insertions(+), 7 deletions(-)


repo.or.cz automatic notification. Contact project admin crma...@gmail.com
if you want to unsubscribe, or site admin ad...@repo.or.cz if you receive
no reply.
-- 
wmaker-crm.git ("The Window Maker window manager")


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

Reply via email to