[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm f299ca5 2/4: Fix systemtray position
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm f299ca5 2/4: Fix systemtray position |
Date: |
Fri, 24 Feb 2017 10:31:54 -0500 (EST) |
branch: externals/exwm
commit f299ca5ed7056842aa59e9978061bca650316a71
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Fix systemtray position
* exwm-workspace.el (exwm-workspace--update-workareas-hook): New hook
run when workareas get updated.
(exwm-workspace--update-workareas): Run the hook.
* exwm-systemtray.el (exwm-systemtray--on-workspace-switch)
(exwm-systemtray--on-randr-refresh): Take struts into account when
calculating the position for systemtray.
(exwm-systemtray--on-struts-update): Alias of
`exwm-systemtray--on-randr-refresh'.
(exwm-systemtray--init, exwm-systemtray--exit): Manipulate
`exwm-workspace--update-workareas-hook'.
---
exwm-systemtray.el | 18 ++++++++++++++++--
exwm-workspace.el | 5 ++++-
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/exwm-systemtray.el b/exwm-systemtray.el
index 60a2e3b..82a2ccd 100644
--- a/exwm-systemtray.el
+++ b/exwm-systemtray.el
@@ -304,6 +304,9 @@ You shall use the default value if using auto-hide
minibuffer.")
:event (xcb:marshal obj exwm-systemtray--connection))))
(xcb:flush exwm-systemtray--connection))
+(defvar exwm-workspace--workareas)
+(defvar exwm-workspace-current-index)
+
(defun exwm-systemtray--on-workspace-switch ()
"Reparent/Refresh the system tray in `exwm-workspace-switch-hook'."
(unless (exwm-workspace--minibuffer-own-frame-p)
@@ -314,7 +317,9 @@ You shall use the default value if using auto-hide
minibuffer.")
(frame-parameter exwm-workspace--current
'window-id))
:x 0
- :y (- (exwm-workspace--current-height)
+ :y (- (elt (elt exwm-workspace--workareas
+ exwm-workspace-current-index)
+ 3)
exwm-systemtray-height))))
(exwm-systemtray--refresh))
@@ -325,10 +330,15 @@ You shall use the default value if using auto-hide
minibuffer.")
(make-instance 'xcb:ConfigureWindow
:window exwm-systemtray--embedder
:value-mask xcb:ConfigWindow:Y
- :y (- (exwm-workspace--current-height)
+ :y (- (elt (elt exwm-workspace--workareas
+ exwm-workspace-current-index)
+ 3)
exwm-systemtray-height))))
(exwm-systemtray--refresh))
+(defalias 'exwm-systemtray--on-struts-update
+ #'exwm-systemtray--on-randr-refresh)
+
(defvar xcb:Atom:_NET_SYSTEM_TRAY_S0)
(defvar exwm-workspace--minibuffer)
@@ -459,6 +469,8 @@ You shall use the default value if using auto-hide
minibuffer.")
#'exwm-systemtray--on-KeyPress))
;; Add hook to move/reparent the embedder.
(add-hook 'exwm-workspace-switch-hook #'exwm-systemtray--on-workspace-switch)
+ (add-hook 'exwm-workspace--update-workareas-hook
+ #'exwm-systemtray--on-struts-update)
(when (boundp 'exwm-randr-refresh-hook)
(add-hook 'exwm-randr-refresh-hook #'exwm-systemtray--on-randr-refresh)))
@@ -472,6 +484,8 @@ You shall use the default value if using auto-hide
minibuffer.")
exwm-systemtray--embedder nil)
(remove-hook 'exwm-workspace-switch-hook
#'exwm-systemtray--on-workspace-switch)
+ (remove-hook 'exwm-workspace--update-workareas-hook
+ #'exwm-systemtray--on-struts-update)
(when (boundp 'exwm-randr-refresh-hook)
(remove-hook 'exwm-randr-refresh-hook
#'exwm-systemtray--on-randr-refresh))))
diff --git a/exwm-workspace.el b/exwm-workspace.el
index 17aa2c0..6686598 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -247,6 +247,8 @@ Value nil means to use the default position which is fixed
at bottom, while
(append exwm-workspace--struts (list struts*))))))))))
(defvar exwm-workspace--workareas nil "Workareas (struts excluded).")
+(defvar exwm-workspace--update-workareas-hook nil
+ "Normal hook run when workareas get updated.")
(defun exwm-workspace--update-workareas ()
"Update `exwm-workspace--workareas'."
@@ -309,7 +311,8 @@ Value nil means to use the default position which is fixed
at bottom, while
(cl-incf (aref w 3) delta))))))
;; Save the result.
(setq exwm-workspace--workareas workareas)
- (xcb:flush exwm--connection)))
+ (xcb:flush exwm--connection))
+ (run-hooks 'exwm-workspace--update-workareas-hook))
(defvar exwm-workspace--fullscreen-frame-count 0
"Count the fullscreen workspace frames.")