summaryrefslogtreecommitdiff
path: root/src/netwm.c
diff options
context:
space:
mode:
authorpnd23@telenet.be <pnd23@telenet.be>2019-05-03 19:57:32 +0200
committerOlivier Fourdan <fourdan@xfce.org>2019-05-03 19:57:32 +0200
commit70832c81246b2590524d3902412875e490f9b2b8 (patch)
tree986dd02762257ca5fbd16176b8cb3534adb19e1b /src/netwm.c
parentcb10c42fcee02592ece1e55954352b4b470b836c (diff)
downloadxfwm4-70832c81246b2590524d3902412875e490f9b2b8.tar.gz
netwm: Allow hiding windows using NET_WM_STATE_HIDDEN
Bug 15356 Handle state changes of NET_WM_STATE_HIDDEN to hide or show the client window.
Diffstat (limited to 'src/netwm.c')
-rw-r--r--src/netwm.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/netwm.c b/src/netwm.c
index a6e03948b..a04fe5b07 100644
--- a/src/netwm.c
+++ b/src/netwm.c
@@ -333,6 +333,33 @@ clientUpdateNetState (Client * c, XClientMessageEvent * ev)
second = ev->data.l[2];
mode = 0;
+ if ((first == display_info->atoms[NET_WM_STATE_HIDDEN]) ||
+ (second == display_info->atoms[NET_WM_STATE_HIDDEN]))
+ {
+ if ((action == NET_WM_STATE_ADD) && !FLAG_TEST (c->flags, CLIENT_FLAG_ICONIFIED))
+ {
+ if (CLIENT_CAN_HIDE_WINDOW (c))
+ {
+ clientWithdraw (c, c->win_workspace, TRUE);
+ }
+ }
+ else if ((action == NET_WM_STATE_REMOVE) && FLAG_TEST (c->flags, CLIENT_FLAG_ICONIFIED))
+ {
+ clientShow (c, TRUE);
+ }
+ else if (action == NET_WM_STATE_TOGGLE)
+ {
+ if (FLAG_TEST (c->flags, CLIENT_FLAG_ICONIFIED))
+ {
+ clientShow (c, TRUE);
+ }
+ else if (CLIENT_CAN_HIDE_WINDOW (c))
+ {
+ clientWithdraw (c, c->win_workspace, TRUE);
+ }
+ }
+ }
+
if ((first == display_info->atoms[NET_WM_STATE_SHADED]) ||
(second == display_info->atoms[NET_WM_STATE_SHADED]))
{