From badf1c30a04cdc008f189c1cdef93c3db7ee7b6d Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Fri, 12 Aug 2016 20:28:05 +0800 Subject: [PATCH] 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. --- exwm-workspace.el | 25 +++++++++++++------------ exwm.el | 20 ++++++-------------- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/exwm-workspace.el b/exwm-workspace.el index befa8e0..0e078b7 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 0544308..6737443 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)