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

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

[elpa] externals/exwm 2779d2e 3/4: Make the creation/destruction of floa


From: Chris Feng
Subject: [elpa] externals/exwm 2779d2e 3/4: Make the creation/destruction of floating frames more silent
Date: Wed, 28 Oct 2015 11:00:38 +0000

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

    Make the creation/destruction of floating frames more silent
    
    * exwm-floating.el (exwm-floating--set-floating): Reparent floating frames
      as late as possible.
    * exwm-manage.el (exwm-manage--unmanage-window): Hide floating frames first
      on unmanagement.
---
 exwm-floating.el |   16 +++++++++-------
 exwm-manage.el   |   11 +++++++----
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/exwm-floating.el b/exwm-floating.el
index 408cf37..8fbb2bc 100644
--- a/exwm-floating.el
+++ b/exwm-floating.el
@@ -31,7 +31,7 @@
 (eval-when-compile (require 'exwm-workspace))
 
 (defvar exwm-floating-border-width 1 "Border width of the floating window.")
-(defvar exwm-floating-border-color "blue"
+(defvar exwm-floating-border-color "navy"
   "Border color of the floating window.")
 
 (defvar exwm-floating-setup-hook nil
@@ -79,6 +79,8 @@
                        `((minibuffer . nil) ;use the one on workspace
                          (background-color . ,exwm-floating-border-color)
                          (internal-border-width . ,exwm-floating-border-width)
+                         (left . 10000)
+                         (top . 10000)
                          (unsplittable . t))) ;and fix the size later
                     (exwm--unlock))))
          (frame-id (string-to-number (frame-parameter frame 'window-id)))
@@ -155,12 +157,6 @@
         (make-instance 'xcb:ChangeWindowAttributes
                        :window frame-id :value-mask xcb:CW:EventMask
                        :event-mask xcb:EventMask:SubstructureRedirect))
-    ;; Reparent this frame to the original one
-    (xcb:+request exwm--connection
-        (make-instance 'xcb:ReparentWindow
-                       :window outer-id :parent original-id
-                       :x (- x exwm-floating-border-width)
-                       :y (- y exwm-floating-border-width)))
     ;; Save the geometry
     ;; Rationale: the frame will not be ready for some time, thus we cannot
     ;;            infer the correct window size from its geometry.
@@ -182,6 +178,12 @@
         (make-instance 'xcb:ChangeWindowAttributes
                        :window id :value-mask xcb:CW:EventMask
                        :event-mask exwm--client-event-mask))
+    ;; Reparent this frame to the original one
+    (xcb:+request exwm--connection
+        (make-instance 'xcb:ReparentWindow
+                       :window outer-id :parent original-id
+                       :x (- x exwm-floating-border-width)
+                       :y (- y exwm-floating-border-width)))
     (xcb:flush exwm--connection)
     ;; Set window/buffer
     (with-current-buffer (exwm--id->buffer id)
diff --git a/exwm-manage.el b/exwm-manage.el
index fb6ca16..0eed8b9 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -139,9 +139,9 @@ corresponding buffer.")
                                         height)
                                      2)))))
         (xcb:flush exwm--connection)
-        (setq kill-buffer-query-functions nil)
         (setq exwm--id-buffer-alist (assq-delete-all id exwm--id-buffer-alist))
-        (kill-buffer (current-buffer))
+        (let ((kill-buffer-query-functions nil))
+          (kill-buffer (current-buffer)))
         (throw 'return 'ignored))
       ;; Manage the window
       (exwm--log "Manage #x%x" id)
@@ -190,6 +190,9 @@ corresponding buffer.")
     (xcb:flush exwm--connection)
     (when (buffer-live-p buffer)
       (with-current-buffer buffer
+        (when exwm--floating-frame
+          (make-frame-invisible exwm--floating-frame)
+          (redisplay))
         (setq exwm-workspace--switch-history-outdated t)
         ;;
         (when withdraw-only
@@ -224,8 +227,8 @@ corresponding buffer.")
               (make-instance 'xcb:DeleteProperty
                              :window id :property xcb:Atom:WM_STATE))
           (xcb:flush exwm--connection))
-        (setq kill-buffer-query-functions nil)
-        (let ((floating exwm--floating-frame))
+        (let ((kill-buffer-query-functions nil)
+              (floating exwm--floating-frame))
           (kill-buffer)
           (when floating
             (select-window



reply via email to

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