about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2016-08-12T12·28+0800
committerChris Feng <chris.w.feng@gmail.com>2016-08-12T12·28+0800
commitbadf1c30a04cdc008f189c1cdef93c3db7ee7b6d (patch)
treee53f6c0029fd60aaea5f151226db136891e5a8fe
parentebcc9591f3c1210efda007bec6852369b75fa8ad (diff)
Raise all docks/panels when switching workspace
* exwm.el (exwm--update-struts-legacy, exwm--update-struts-partial):
Always set the struts value, even it's nil.
* exwm-workspace.el (exwm-workspace--update-struts): Check for nil
struts values.
-rw-r--r--exwm-workspace.el25
-rw-r--r--exwm.el20
2 files changed, 19 insertions, 26 deletions
diff --git a/exwm-workspace.el b/exwm-workspace.el
index befa8e00bc..0e078b7cc9 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -232,18 +232,19 @@ Value nil means to use the default position which is fixed at bottom, while
   (let (struts struts*)
     (dolist (pair exwm-workspace--id-struts-alist)
       (setq struts (cdr pair))
-      (dotimes (i 4)
-        (when (/= 0 (aref struts i))
-          (setq struts*
-                (vector (aref [left right top bottom] i)
-                        (aref struts i)
-                        (when (= 12 (length struts))
-                          (substring struts (+ 4 (* i 2)) (+ 6 (* i 2))))))
-          (if (= 0 (mod i 2))
-              ;; Make left/top processed first.
-              (push struts* exwm-workspace--struts)
-            (setq exwm-workspace--struts
-                  (append exwm-workspace--struts (list struts*)))))))))
+      (when struts
+        (dotimes (i 4)
+          (when (/= 0 (aref struts i))
+            (setq struts*
+                  (vector (aref [left right top bottom] i)
+                          (aref struts i)
+                          (when (= 12 (length struts))
+                            (substring struts (+ 4 (* i 2)) (+ 6 (* i 2))))))
+            (if (= 0 (mod i 2))
+                ;; Make left/top processed first.
+                (push struts* exwm-workspace--struts)
+              (setq exwm-workspace--struts
+                    (append exwm-workspace--struts (list struts*))))))))))
 
 (defvar exwm-workspace--workareas nil "Workareas (struts excluded).")
 
diff --git a/exwm.el b/exwm.el
index 0544308bfe..67374430c1 100644
--- a/exwm.el
+++ b/exwm.el
@@ -268,13 +268,9 @@
                                      :window id)))
       (when reply
         (setq struts (slot-value reply 'value))
-        (if struts
-            (if pair
-                (setcdr pair struts)
-              (push (cons id struts) exwm-workspace--id-struts-alist))
-          (when pair
-            (setq exwm-workspace--id-struts-alist
-                  (assq-delete-all id exwm-workspace--id-struts-alist))))
+        (if pair
+            (setcdr pair struts)
+          (push (cons id struts) exwm-workspace--id-struts-alist))
         (exwm-workspace--update-struts))
       ;; Update workareas and set _NET_WORKAREA.
       (exwm-workspace--update-workareas)
@@ -291,13 +287,9 @@
     (when reply
       (setq struts (slot-value reply 'value)
             pair (assq id exwm-workspace--id-struts-alist))
-      (if struts
-          (if pair
-              (setcdr pair struts)
-            (push (cons id struts) exwm-workspace--id-struts-alist))
-        (when pair
-          (setq exwm-workspace--id-struts-alist
-                (assq-delete-all id exwm-workspace--id-struts-alist))))
+      (if pair
+          (setcdr pair struts)
+        (push (cons id struts) exwm-workspace--id-struts-alist))
       (exwm-workspace--update-struts))
     ;; Update workareas and set _NET_WORKAREA.
     (exwm-workspace--update-workareas)