[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