From ebcc9591f3c1210efda007bec6852369b75fa8ad Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Fri, 12 Aug 2016 19:27:26 +0800 Subject: Check for _NET_WM_STATE_FULLSCREEN on managing * exwm-core.el (exwm--fullscreen): Removed. (exwm--ewmh-state): New variable for recording the _NET_WM_STATE hint. * exwm-core.el (exwm-mode-menu, exwm-mode-map): * exwm-layout.el (exwm-layout-set-fullscreen) (exwm-layout-unset-fullscreen): * exwm-manage.el (exwm-manage--unmanage-window) (exwm-manage--on-ConfigureRequest): * exwm-workspace.el (exwm-workspace-switch, exwm-workspace-swap) (exwm-workspace-move): * exwm.el (exwm-reset, exwm--on-ClientMessage): Use the new variable. * exwm-manage.el (exwm-manage--update-ewmh-state): New function for updating _NET_WM_STATE. (exwm-manage--manage-window): Update _NET_WM_STATE and check for _NET_WM_STATE_FULLSCREEN. --- exwm-core.el | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'exwm-core.el') diff --git a/exwm-core.el b/exwm-core.el index 226e7fc312f3..0c92d903394d 100644 --- a/exwm-core.el +++ b/exwm-core.el @@ -87,7 +87,6 @@ (defvar-local exwm--frame nil) ;workspace frame (defvar-local exwm--floating-frame nil) ;floating frame (defvar-local exwm--mode-line-format nil) ;save mode-line-format -(defvar-local exwm--fullscreen nil) ;used in fullscreen (defvar-local exwm--floating-frame-position nil) ;used in fullscreen (defvar-local exwm--fixed-size nil) ;fixed size (defvar-local exwm--keyboard-grabbed nil) ;Keyboard grabbed. @@ -103,6 +102,7 @@ (defvar-local exwm-transient-for nil "WM_TRANSIENT_FOR.") (defvar-local exwm--protocols nil) (defvar-local exwm-state xcb:icccm:WM_STATE:NormalState "WM_STATE.") +(defvar-local exwm--ewmh-state nil "_NET_WM_STATE.") ;; _NET_WM_NORMAL_HINTS (defvar-local exwm--normal-hints-x nil) (defvar-local exwm--normal-hints-y nil) @@ -150,8 +150,10 @@ "*General*" "---" ["Toggle floating" exwm-floating-toggle-floating] - ["Enter fullscreen" exwm-layout-set-fullscreen (not exwm--fullscreen)] - ["Leave fullscreen" exwm-reset exwm--fullscreen] + ["Enter fullscreen" exwm-layout-set-fullscreen + (null (memq xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state))] + ["Leave fullscreen" exwm-reset + (memq xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state)] ["Hide window" exwm-floating-hide exwm--floating-frame] "---" -- cgit 1.4.1