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.