Allow floating X windows to resize themselves

* exwm-manage.el (exwm-manage--on-ConfigureRequest):
Allow (non-fullscreen) floating X windows to resize themselves.
This commit is contained in:
Chris Feng 2016-03-06 14:28:42 +08:00
parent 6fe6fe52f6
commit f0a5425f4c

View file

@ -419,7 +419,9 @@ Would you like to kill it? "
border-width: %d; sibling: #x%x; stack-mode: %d" border-width: %d; sibling: #x%x; stack-mode: %d"
window value-mask width height x y window value-mask width height x y
border-width sibling stack-mode) border-width sibling stack-mode)
(if (setq buffer (exwm--id->buffer window)) (if (and (setq buffer (exwm--id->buffer window))
(with-current-buffer buffer
(or exwm--fullscreen (not exwm--floating-frame))))
;; Send client message for managed windows ;; Send client message for managed windows
(with-current-buffer buffer (with-current-buffer buffer
(setq edges (setq edges
@ -444,6 +446,19 @@ border-width: %d; sibling: #x%x; stack-mode: %d"
:height (- (elt edges 3) (elt edges 1)) :height (- (elt edges 3) (elt edges 1))
:border-width 0 :override-redirect 0) :border-width 0 :override-redirect 0)
exwm--connection)))) exwm--connection))))
(if buffer
(with-current-buffer buffer
(exwm--log "ConfigureWindow (resize floating X window)")
(setq edges
(window-inside-pixel-edges (get-buffer-window buffer t)))
(set-frame-size exwm--floating-frame
(+ width
(- (frame-pixel-width exwm--floating-frame)
(- (elt edges 2) (elt edges 0))))
(+ height
(- (frame-pixel-height exwm--floating-frame)
(- (elt edges 3) (elt edges 1))))
t))
(exwm--log "ConfigureWindow (preserve geometry)") (exwm--log "ConfigureWindow (preserve geometry)")
;; Configure the unmanaged window. ;; Configure the unmanaged window.
(xcb:+request exwm--connection (xcb:+request exwm--connection
@ -453,7 +468,7 @@ border-width: %d; sibling: #x%x; stack-mode: %d"
:x x :y y :width width :height height :x x :y y :width width :height height
:border-width border-width :border-width border-width
:sibling sibling :sibling sibling
:stack-mode stack-mode))))) :stack-mode stack-mode))))))
(xcb:flush exwm--connection)) (xcb:flush exwm--connection))
(defun exwm-manage--on-MapRequest (data _synthetic) (defun exwm-manage--on-MapRequest (data _synthetic)