Fix window size calculations

* When sending the synthetic ConfigureNotify event, make sure we are dealing
  with the correct Emacs window
* When managing a floating window, ensure it can be easily pick up by the user
This commit is contained in:
Chris Feng 2015-08-27 11:03:27 +08:00
parent bb4ebde55b
commit 5f9f673791
2 changed files with 6 additions and 5 deletions

View file

@ -98,8 +98,8 @@
width display-width)) width display-width))
;; Invalid width ;; Invalid width
(when (= 0 width) (setq width (/ display-width 2))) (when (= 0 width) (setq width (/ display-width 2)))
;; Completely outsize ;; Make sure at least half of the window is visible
(when (or (> x display-width) (> 0 (+ x display-width))) (when (or (> (+ x (/ width 2)) display-width) (> 0 (+ x (/ width 2))))
(setq x (/ (- display-width width) 2)))) (setq x (/ (- display-width width) 2))))
(if (> height display-height) (if (> height display-height)
;; Too tall ;; Too tall
@ -107,8 +107,9 @@
height display-height) height display-height)
;; Invalid height ;; Invalid height
(when (= 0 height) (setq height (/ display-height 2))) (when (= 0 height) (setq height (/ display-height 2)))
;; Completely outside ;; Make sure at least half of the window is visible
(when (or (> y display-height) (> 0 (+ y display-height))) (when (or (> (+ y (/ height 2)) display-height)
(> 0 (+ y (/ height 2))))
(setq y (/ (- display-height height) 2)))) (setq y (/ (- display-height height) 2))))
;; Center floating windows ;; Center floating windows
(when (and (= x 0) (= y 0)) (when (and (= x 0) (= y 0))

View file

@ -289,7 +289,7 @@ corresponding buffer.")
(frame-pixel-height exwm-workspace--current)) (frame-pixel-height exwm-workspace--current))
(or exwm--floating-edges (or exwm--floating-edges
(window-inside-absolute-pixel-edges (window-inside-absolute-pixel-edges
(get-buffer-window))))) (get-buffer-window buffer t)))))
(exwm--log "Reply with ConfigureNotify (edges): %s" edges) (exwm--log "Reply with ConfigureNotify (edges): %s" edges)
(xcb:+request exwm--connection (xcb:+request exwm--connection
(make-instance 'xcb:SendEvent (make-instance 'xcb:SendEvent