summaryrefslogtreecommitdiff
path: root/src/netwm.c
diff options
context:
space:
mode:
authorLars Luthman <mail@larsluthman.net>2015-08-25 12:07:05 +0200
committerOlivier Fourdan <fourdan@xfce.org>2015-08-25 16:57:25 +0200
commit3f29fb1342e6fc76970e8bfbbbc857568349abdc (patch)
treef8d42bef127a72c93cd18fb5149481857318550d /src/netwm.c
parentd8fe4788541f5092e049b8f18ce1fbcfc2a09147 (diff)
downloadxfwm4-3f29fb1342e6fc76970e8bfbbbc857568349abdc.tar.gz
Stack notifications on top of fullscreen windows
Bug: 7928 Add support for _NET_WM_WINDOW_TYPE_NOTIFICATION windows and stack them in a specific layer above of all other layers.
Diffstat (limited to 'src/netwm.c')
-rw-r--r--src/netwm.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/netwm.c b/src/netwm.c
index 9826c8c3e..51490e557 100644
--- a/src/netwm.c
+++ b/src/netwm.c
@@ -833,7 +833,8 @@ clientGetNetWmType (Client * c)
(atoms[i] == display_info->atoms[NET_WM_WINDOW_TYPE_DIALOG]) ||
(atoms[i] == display_info->atoms[NET_WM_WINDOW_TYPE_NORMAL]) ||
(atoms[i] == display_info->atoms[NET_WM_WINDOW_TYPE_UTILITY]) ||
- (atoms[i] == display_info->atoms[NET_WM_WINDOW_TYPE_SPLASH]))
+ (atoms[i] == display_info->atoms[NET_WM_WINDOW_TYPE_SPLASH]) ||
+ (atoms[i] == display_info->atoms[NET_WM_WINDOW_TYPE_NOTIFICATION]))
{
c->type_atom = atoms[i];
break;
@@ -1293,6 +1294,18 @@ clientWindowType (Client * c)
XFWM_FLAG_HAS_MENU | XFWM_FLAG_HAS_MOVE |
XFWM_FLAG_HAS_RESIZE);
}
+ else if (c->type_atom == display_info->atoms[NET_WM_WINDOW_TYPE_NOTIFICATION])
+ {
+ TRACE ("atom net_wm_window_type_notification detected");
+ c->type = WINDOW_NOTIFICATION;
+ c->initial_layer = WIN_LAYER_NOTIFICATION;
+ /* We unset these because CLIENT_FLAG_ABOVE will interfere with
+ our layer placement and put the window in the ABOVE_DOCK
+ layer, which is below the FULLSCREEN layer when the flags
+ are processed later. */
+ FLAG_UNSET (c->flags,
+ CLIENT_FLAG_ABOVE | CLIENT_FLAG_BELOW);
+ }
}
else
{