diff options
author | pnd23@telenet.be <pnd23@telenet.be> | 2019-05-03 19:57:32 +0200 |
---|---|---|
committer | Olivier Fourdan <fourdan@xfce.org> | 2019-05-03 19:57:32 +0200 |
commit | 70832c81246b2590524d3902412875e490f9b2b8 (patch) | |
tree | 986dd02762257ca5fbd16176b8cb3534adb19e1b /src/netwm.c | |
parent | cb10c42fcee02592ece1e55954352b4b470b836c (diff) | |
download | xfwm4-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.c | 27 |
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])) { |