Fix hiding floating X windows

* exwm-layout.el (exwm-layout--floating-hidden-position): A place far
enough from the origin to actually hide floating X window containers.
(exwm-layout--show, exwm-layout--hide): Use it.
This commit is contained in:
Chris Feng 2019-09-13 00:00:00 +00:00
parent 48b15e25ad
commit eb49e57f76

View file

@ -40,6 +40,9 @@
"Non-nil to allow switching to buffers on other workspaces." "Non-nil to allow switching to buffers on other workspaces."
:type 'boolean) :type 'boolean)
(defconst exwm-layout--floating-hidden-position -101
"Where to place hidden floating X windows.")
(defvar exwm-layout--other-buffer-exclude-buffers nil (defvar exwm-layout--other-buffer-exclude-buffers nil
"List of buffers that should not be selected by `other-buffer'.") "List of buffers that should not be selected by `other-buffer'.")
@ -114,9 +117,8 @@
(when exwm--floating-frame-position (when exwm--floating-frame-position
(setq frame-x (elt exwm--floating-frame-position 0) (setq frame-x (elt exwm--floating-frame-position 0)
frame-y (elt exwm--floating-frame-position 1) frame-y (elt exwm--floating-frame-position 1)
;; The frame was placed at (-1, -1). x (+ x frame-x (- exwm-layout--floating-hidden-position))
x (+ x frame-x 1) y (+ y frame-y (- exwm-layout--floating-hidden-position)))
y (+ y frame-y 1))
(setq exwm--floating-frame-position nil)) (setq exwm--floating-frame-position nil))
(exwm--set-geometry (frame-parameter exwm--floating-frame (exwm--set-geometry (frame-parameter exwm--floating-frame
'exwm-container) 'exwm-container)
@ -152,7 +154,10 @@
:drawable container)))) :drawable container))))
(setq exwm--floating-frame-position (setq exwm--floating-frame-position
(vector (slot-value geometry 'x) (slot-value geometry 'y))) (vector (slot-value geometry 'x) (slot-value geometry 'y)))
(exwm--set-geometry container -1 -1 1 1))) (exwm--set-geometry container exwm-layout--floating-hidden-position
exwm-layout--floating-hidden-position
1
1)))
(xcb:+request exwm--connection (xcb:+request exwm--connection
(make-instance 'xcb:ChangeWindowAttributes (make-instance 'xcb:ChangeWindowAttributes
:window id :value-mask xcb:CW:EventMask :window id :value-mask xcb:CW:EventMask