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

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

[elpa] externals/exwm a50e6bd: Restack fullscreen X windows


From: Chris Feng
Subject: [elpa] externals/exwm a50e6bd: Restack fullscreen X windows
Date: Mon, 07 Mar 2016 10:16:28 +0000

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

    Restack fullscreen X windows
    
    * exwm-layout.el (exwm-layout-set-fullscreen)
    (exwm-layout-unset-fullscreen): Raise and lower fullscreen X windows
    respectively.
---
 exwm-layout.el |   29 ++++++++++++++++++++++-------
 1 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/exwm-layout.el b/exwm-layout.el
index 76721a0..309bfb6 100644
--- a/exwm-layout.el
+++ b/exwm-layout.el
@@ -165,6 +165,12 @@
     (exwm-layout--resize-container exwm--id exwm--container 0 0
                                    (exwm-workspace--current-width)
                                    (exwm-workspace--current-height))
+    ;; Raise the X window.
+    (xcb:+request exwm--connection
+        (make-instance 'xcb:ConfigureWindow
+                       :window exwm--container
+                       :value-mask xcb:ConfigWindow:StackMode
+                       :stack-mode xcb:StackMode:Above))
     (xcb:+request exwm--connection
         (make-instance 'xcb:ewmh:set-_NET_WM_STATE
                        :window exwm--id
@@ -180,16 +186,25 @@
   (with-current-buffer (if id (exwm--id->buffer id) (window-buffer))
     (unless exwm--fullscreen
       (user-error "Not in full-screen mode."))
-    ;; Restore the floating frame if the client is floating
-    (when exwm--floating-frame
+    (if exwm--floating-frame
+        ;; Restore the floating frame.
+        (xcb:+request exwm--connection
+            (make-instance 'xcb:ConfigureWindow
+                           :window exwm--container
+                           :value-mask (eval-when-compile
+                                         (logior xcb:ConfigWindow:X
+                                                 xcb:ConfigWindow:Y))
+                           :x (elt exwm--floating-frame-position 0)
+                           :y (elt exwm--floating-frame-position 1)))
+      ;; Put the X window just above the Emacs frame.
       (xcb:+request exwm--connection
           (make-instance 'xcb:ConfigureWindow
                          :window exwm--container
-                         :value-mask (eval-when-compile
-                                       (logior xcb:ConfigWindow:X
-                                               xcb:ConfigWindow:Y))
-                         :x (elt exwm--floating-frame-position 0)
-                         :y (elt exwm--floating-frame-position 1))))
+                         :value-mask (logior xcb:ConfigWindow:Sibling
+                                             xcb:ConfigWindow:StackMode)
+                         :sibling (frame-parameter exwm-workspace--current
+                                                   'exwm-container)
+                         :stack-mode xcb:StackMode:Above)))
     (exwm-layout--show exwm--id)
     (xcb:+request exwm--connection
         (make-instance 'xcb:ewmh:set-_NET_WM_STATE :window exwm--id :data []))



reply via email to

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