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

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

[elpa] externals/exwm 06c1b04: Set background pixmap for system tray emb


From: Chris Feng
Subject: [elpa] externals/exwm 06c1b04: Set background pixmap for system tray embedder
Date: Sun, 7 Aug 2016 05:37:47 +0000 (UTC)

branch: externals/exwm
commit 06c1b0485a1815d13ded7bd717adf5d9735be3df
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    Set background pixmap for system tray embedder
    
    * exwm-systemtray.el (exwm-systemtray--init): Make embedder use the same
    depth and pixmap of the parent; the parent is always a Emacs frame.
---
 exwm-systemtray.el |   43 +++++++++++++++++++++++++++----------------
 1 file changed, 27 insertions(+), 16 deletions(-)

diff --git a/exwm-systemtray.el b/exwm-systemtray.el
index 25f5fa5..e978f64 100644
--- a/exwm-systemtray.el
+++ b/exwm-systemtray.el
@@ -370,27 +370,38 @@ You shall use the default value if using auto-hide 
minibuffer.")
                        :data xcb:systemtray:ORIENTATION:HORZ)))
   ;; Create the embedder.
   (let ((id (xcb:generate-id exwm-systemtray--connection))
-        parent y)
+        frame parent depth y)
     (setq exwm-systemtray--embedder id)
-    (xcb:+request exwm-systemtray--connection
-        (make-instance 'xcb:CreateWindow
-                       :depth 0 :wid id :parent exwm--root
-                       :x 0 :y 0 :width 1 :height exwm-systemtray-height
-                       :border-width 0 :class xcb:WindowClass:CopyFromParent
-                       :visual 0 :value-mask xcb:CW:EventMask
-                       :event-mask xcb:EventMask:SubstructureNotify))
     (if (exwm-workspace--minibuffer-own-frame-p)
-        (setq parent (frame-parameter exwm-workspace--minibuffer
-                                      'exwm-container)
-              ;; Vertically centered.
-              y (/ (- (line-pixel-height) exwm-systemtray-height) 2))
-      (setq parent (string-to-number (frame-parameter exwm-workspace--current
-                                                      'window-id))
+        (setq frame exwm-workspace--minibuffer
+              y (if (>= (line-pixel-height) exwm-systemtray-height)
+                    ;; Bottom aligned.
+                    (- (line-pixel-height) exwm-systemtray-height)
+                  ;; Vertically centered.
+                  (/ (- (line-pixel-height) exwm-systemtray-height) 2)))
+      (setq frame exwm-workspace--current
             ;; Bottom aligned.
             y (- (exwm-workspace--current-height) exwm-systemtray-height)))
+    (setq parent (string-to-number (frame-parameter frame 'window-id))
+          depth (slot-value (xcb:+request-unchecked+reply exwm--connection
+                                (make-instance 'xcb:GetGeometry
+                                               :drawable parent))
+                            'depth))
     (xcb:+request exwm-systemtray--connection
-        (make-instance 'xcb:ReparentWindow
-                       :window id :parent parent :x 0 :y y))
+        (make-instance 'xcb:CreateWindow
+                       :depth depth
+                       :wid id
+                       :parent parent
+                       :x 0
+                       :y y
+                       :width 1
+                       :height exwm-systemtray-height
+                       :border-width 0
+                       :class xcb:WindowClass:CopyFromParent
+                       :visual 0
+                       :value-mask (logior xcb:CW:BackPixmap xcb:CW:EventMask)
+                       :background-pixmap xcb:BackPixmap:ParentRelative
+                       :event-mask xcb:EventMask:SubstructureNotify))
     ;; Set _NET_WM_NAME.
     (xcb:+request exwm-systemtray--connection
         (make-instance 'xcb:ewmh:set-_NET_WM_NAME



reply via email to

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