emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/exwm 3dbf1b1 3/4: Add support for _NET_WM_STATE_HIDDEN


From: Chris Feng
Subject: [elpa] externals/exwm 3dbf1b1 3/4: Add support for _NET_WM_STATE_HIDDEN
Date: Sun, 29 Mar 2020 08:49:50 -0400 (EDT)

branch: externals/exwm
commit 3dbf1b1bed96d9ac3ee2718134ded619f46951bb
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    Add support for _NET_WM_STATE_HIDDEN
    
    * exwm-layout.el (exwm-layout--set-ewmh-state): New function for
    setting _NET_WM_STATE (according to local state).
    * exwm.el (exwm--init-icccm-ewmh): Declare the support for this atom.
---
 exwm-layout.el | 23 ++++++++++++++++-------
 exwm.el        |  2 +-
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/exwm-layout.el b/exwm-layout.el
index cb7ad56..170c2be 100644
--- a/exwm-layout.el
+++ b/exwm-layout.el
@@ -80,6 +80,14 @@
          (buffer-local-value 'exwm-state (exwm--id->buffer id))
        exwm-state)))
 
+(defun exwm-layout--set-ewmh-state (xwin)
+  "Set _NET_WM_STATE."
+  (with-current-buffer (exwm--id->buffer xwin)
+    (xcb:+request exwm--connection
+        (make-instance 'xcb:ewmh:set-_NET_WM_STATE
+                       :window exwm--id
+                       :data exwm--ewmh-state))))
+
 (defun exwm-layout--fullscreen-p ()
   (when (derived-mode-p 'exwm-mode)
     (memq xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state)))
@@ -135,6 +143,9 @@
       (exwm--set-geometry id x y width height)
       (xcb:+request exwm--connection (make-instance 'xcb:MapWindow :window id))
       (exwm-layout--set-state id xcb:icccm:WM_STATE:NormalState)
+      (setq exwm--ewmh-state
+            (delq xcb:Atom:_NET_WM_STATE_HIDDEN exwm--ewmh-state))
+      (exwm-layout--set-ewmh-state id)
       (exwm-layout--auto-iconify)))
   (xcb:flush exwm--connection))
 
@@ -168,6 +179,8 @@
                          :window id :value-mask xcb:CW:EventMask
                          :event-mask (exwm--get-client-event-mask)))
       (exwm-layout--set-state id xcb:icccm:WM_STATE:IconicState)
+      (cl-pushnew xcb:Atom:_NET_WM_STATE_HIDDEN exwm--ewmh-state)
+      (exwm-layout--set-ewmh-state id)
       (exwm-layout--auto-iconify)
       (xcb:flush exwm--connection))))
 
@@ -191,13 +204,10 @@
                                            xcb:ConfigWindow:StackMode)
                        :border-width 0
                        :stack-mode xcb:StackMode:Above))
-    (xcb:+request exwm--connection
-        (make-instance 'xcb:ewmh:set-_NET_WM_STATE
-                       :window exwm--id
-                       :data (vector xcb:Atom:_NET_WM_STATE_FULLSCREEN)))
+    (cl-pushnew xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state)
+    (exwm-layout--set-ewmh-state id)
     (xcb:flush exwm--connection)
     (set-window-dedicated-p (get-buffer-window) t)
-    (cl-pushnew xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state)
     (exwm-input--release-keyboard exwm--id)))
 
 ;;;###autoload
@@ -223,8 +233,7 @@
       (let ((window (get-buffer-window nil t)))
         (when window
           (exwm-layout--show exwm--id window))))
-    (xcb:+request exwm--connection
-        (make-instance 'xcb:ewmh:set-_NET_WM_STATE :window exwm--id :data []))
+    (exwm-layout--set-ewmh-state id)
     (xcb:flush exwm--connection)
     (set-window-dedicated-p (get-buffer-window) nil)
     (when (eq 'line-mode exwm--selected-input-mode)
diff --git a/exwm.el b/exwm.el
index 112f42d..09192fa 100644
--- a/exwm.el
+++ b/exwm.el
@@ -673,7 +673,7 @@
                             ;; xcb:Atom:_NET_WM_STATE_SHADED
                             ;; xcb:Atom:_NET_WM_STATE_SKIP_TASKBAR
                             ;; xcb:Atom:_NET_WM_STATE_SKIP_PAGER
-                            ;; xcb:Atom:_NET_WM_STATE_HIDDEN
+                            xcb:Atom:_NET_WM_STATE_HIDDEN
                             xcb:Atom:_NET_WM_STATE_FULLSCREEN
                             ;; xcb:Atom:_NET_WM_STATE_ABOVE
                             ;; xcb:Atom:_NET_WM_STATE_BELOW



reply via email to

[Prev in Thread] Current Thread [Next in Thread]