Fix wrong/missing ConfigureNotify events

* exwm-floating.el (exwm-floating--set-floating): Set exwm--floating-edges
  as absolute edges (the relative edges can be easily determined).
* exwm-layout.el (exwm-layout--show): Send correct absolute positions to
  floating X windows.

* exwm-floating.el (exwm-floating--stop-moveresize, exwm-floating-move): Send
  ConfigureNotify events after moving floating X windows.
This commit is contained in:
Chris Feng 2015-09-18 14:17:52 +08:00
parent 4255f078a6
commit 412d2a52bd
2 changed files with 57 additions and 11 deletions

View file

@ -40,11 +40,17 @@
(let* ((buffer (exwm--id->buffer id))
(edges (or (and buffer
(with-current-buffer buffer exwm--floating-edges))
(window-inside-pixel-edges window)))
(x (elt edges 0))
(y (elt edges 1))
(window-inside-absolute-pixel-edges window)))
(width (- (elt edges 2) (elt edges 0)))
(height (- (elt edges 3) (elt edges 1))))
(height (- (elt edges 3) (elt edges 1)))
x y)
(if exwm--floating-edges
;; The relative position of a floating X window is determinate
(setq x exwm-floating-border-width
y exwm-floating-border-width)
(let ((relative-edges (window-inside-pixel-edges window)))
(setq x (elt relative-edges 0)
y (elt relative-edges 1))))
(xcb:+request exwm--connection
(make-instance 'xcb:ConfigureWindow
:window id
@ -64,7 +70,8 @@
(make-instance 'xcb:ConfigureNotify
:event id :window id
:above-sibling xcb:Window:None
:x x :y y
:x (elt edges 0)
:y (elt edges 1)
:width width :height height
:border-width 0
:override-redirect 0)