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 <[email protected]>
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 <[email protected]>
Signed-off-by: Bjørn Mork <[email protected]>
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 <[email protected]>
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 <[email protected]>
Signed-off-by: Bjørn Mork <[email protected]>
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 [email protected]
if you want to unsubscribe, or site admin [email protected] if you receive
no reply.
--
wmaker-crm.git ("The Window Maker window manager")
--
To unsubscribe, send mail to [email protected].