Remember the geometries of floating X windows
* exwm-floating.el (exwm-floating--stop-moveresize): * exwm-layout.el (exwm-layout-enlarge-window): Update the geometry after resizing.
This commit is contained in:
parent
0833e8dc4a
commit
2597f74c7f
2 changed files with 24 additions and 9 deletions
|
@ -550,22 +550,35 @@ context of the corresponding buffer.")
|
|||
;; Unmanaged.
|
||||
(eq major-mode 'exwm-mode))
|
||||
(let ((edges (window-inside-absolute-pixel-edges (frame-selected-window)))
|
||||
(id (buffer-local-value 'exwm--id
|
||||
(window-buffer (frame-selected-window)))))
|
||||
x y width height id)
|
||||
(setq x (pop edges)
|
||||
y (pop edges)
|
||||
width (- (pop edges) x)
|
||||
height (- (pop edges) y))
|
||||
(with-current-buffer (window-buffer (frame-selected-window))
|
||||
(setq id exwm--id)
|
||||
(with-slots ((x* x)
|
||||
(y* y)
|
||||
(width* width)
|
||||
(height* height))
|
||||
exwm--geometry
|
||||
(setf x* x
|
||||
y* y
|
||||
width* width
|
||||
height* height)))
|
||||
(xcb:+request exwm--connection
|
||||
(make-instance 'xcb:SendEvent
|
||||
:propagate 0 :destination id
|
||||
:propagate 0
|
||||
:destination id
|
||||
:event-mask xcb:EventMask:StructureNotify
|
||||
:event (xcb:marshal
|
||||
(make-instance 'xcb:ConfigureNotify
|
||||
:event id :window id
|
||||
:above-sibling xcb:Window:None
|
||||
:x (elt edges 0)
|
||||
:y (elt edges 1)
|
||||
:width (- (elt edges 2)
|
||||
(elt edges 0))
|
||||
:height (- (elt edges 3)
|
||||
(elt edges 1))
|
||||
:x x
|
||||
:y y
|
||||
:width width
|
||||
:height height
|
||||
:border-width 0
|
||||
:override-redirect 0)
|
||||
exwm--connection)))))
|
||||
|
|
|
@ -460,6 +460,7 @@ windows."
|
|||
(setq width (max (+ exwm--normal-hints-min-width margin)
|
||||
(+ width delta))))))
|
||||
(when width
|
||||
(setf (slot-value exwm--geometry 'width) width)
|
||||
(xcb:+request exwm--connection
|
||||
(make-instance 'xcb:ConfigureWindow
|
||||
:window (frame-parameter exwm--floating-frame
|
||||
|
@ -492,6 +493,7 @@ windows."
|
|||
(setq height (max (+ exwm--normal-hints-min-height margin)
|
||||
(+ height delta))))))
|
||||
(when height
|
||||
(setf (slot-value exwm--geometry 'height) height)
|
||||
(xcb:+request exwm--connection
|
||||
(make-instance 'xcb:ConfigureWindow
|
||||
:window (frame-parameter exwm--floating-frame
|
||||
|
|
Loading…
Reference in a new issue