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

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

[elpa] externals/exwm 1f2bd54 2/4: Fix a regression with systemtray


From: Chris Feng
Subject: [elpa] externals/exwm 1f2bd54 2/4: Fix a regression with systemtray
Date: Sun, 11 Aug 2019 12:24:59 -0400 (EDT)

branch: externals/exwm
commit 1f2bd54c117b3eeb88b6af1e8627030f00e37898
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    Fix a regression with systemtray
    
    * exwm-systemtray.el (exwm-systemtray--on-workspace-switch)
    (exwm-systemtray--on-randr-refresh): Instead of retrieving the real
    frame height, manually calculate it with workarea height and
    menu-bar/tool-bar size.
---
 exwm-systemtray.el | 40 +++++++++++++++++++++++++---------------
 1 file changed, 25 insertions(+), 15 deletions(-)

diff --git a/exwm-systemtray.el b/exwm-systemtray.el
index 80505c2..a095bfa 100644
--- a/exwm-systemtray.el
+++ b/exwm-systemtray.el
@@ -331,27 +331,37 @@ You shall use the default value if using auto-hide 
minibuffer."
   "Reparent/Refresh the system tray in `exwm-workspace-switch-hook'."
   (exwm--log)
   (unless (exwm-workspace--minibuffer-own-frame-p)
-    (xcb:+request exwm-systemtray--connection
-        (make-instance 'xcb:ReparentWindow
-                       :window exwm-systemtray--embedder-window
-                       :parent (string-to-number
-                                (frame-parameter exwm-workspace--current
-                                                 'window-id))
-                       :x 0
-                       :y (- (frame-pixel-height exwm-workspace--current)
-                             exwm-systemtray-height))))
+    (let ((geometry (frame-geometry exwm-workspace--current)))
+      (xcb:+request exwm-systemtray--connection
+          (make-instance 'xcb:ReparentWindow
+                         :window exwm-systemtray--embedder-window
+                         :parent (string-to-number
+                                  (frame-parameter exwm-workspace--current
+                                                   'window-id))
+                         :x 0
+                         :y (- (elt (elt exwm-workspace--workareas
+                                         exwm-workspace-current-index)
+                                    3)
+                               (or (cddr (assq 'menu-bar-size geometry)) 0)
+                               (or (cddr (assq 'tool-bar-size geometry)) 0)
+                               exwm-systemtray-height)))))
   (exwm-systemtray--refresh))
 
 (defun exwm-systemtray--on-randr-refresh ()
   "Reposition/Refresh the system tray in `exwm-randr-refresh-hook'."
   (exwm--log)
   (unless (exwm-workspace--minibuffer-own-frame-p)
-    (xcb:+request exwm-systemtray--connection
-        (make-instance 'xcb:ConfigureWindow
-                       :window exwm-systemtray--embedder-window
-                       :value-mask xcb:ConfigWindow:Y
-                       :y (- (frame-pixel-height exwm-workspace--current)
-                             exwm-systemtray-height))))
+    (let ((geometry (frame-geometry exwm-workspace--current)))
+      (xcb:+request exwm-systemtray--connection
+          (make-instance 'xcb:ConfigureWindow
+                         :window exwm-systemtray--embedder-window
+                         :value-mask xcb:ConfigWindow:Y
+                         :y (- (elt (elt exwm-workspace--workareas
+                                         exwm-workspace-current-index)
+                                    3)
+                               (or (cddr (assq 'menu-bar-size geometry)) 0)
+                               (or (cddr (assq 'tool-bar-size geometry)) 0)
+                               exwm-systemtray-height)))))
   (exwm-systemtray--refresh))
 
 (defalias 'exwm-systemtray--on-struts-update



reply via email to

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