about summary refs log tree commit diff
path: root/exwm-manage.el
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2015-10-28T06·04+0800
committerChris Feng <chris.w.feng@gmail.com>2015-10-28T06·05+0800
commit2779d2e418bb07adf0408dc8fdaa0fb6e88bf13a (patch)
tree50f3bf56760338d004c3242e762b8c18fc02ba29 /exwm-manage.el
parent11cc84d77e83b81fce8d3032df29d798546648e7 (diff)
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.
Diffstat (limited to 'exwm-manage.el')
-rw-r--r--exwm-manage.el11
1 files changed, 7 insertions, 4 deletions
diff --git a/exwm-manage.el b/exwm-manage.el
index fb6ca1672b7f..0eed8b9fd7f6 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