branch: externals/exwm
commit 8e3fc3602f649fca47a61a2be2072521a352a62a
Author: Chris Feng <[email protected]>
Commit: Chris Feng <[email protected]>
Adapt for the changes in `window-configuration-change-hook'
* exwm-layout.el (exwm-layout--refresh): Accept frame as an optional
argument.
(exwm-layout--init): Add `exwm-layout--refresh' to
`window-size-change-functions' when appropriate.
---
exwm-layout.el | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/exwm-layout.el b/exwm-layout.el
index 2886e43..f5e0e14 100644
--- a/exwm-layout.el
+++ b/exwm-layout.el
@@ -314,11 +314,14 @@ selected by `other-buffer'."
:data (vconcat (append clients-other clients-iconic
clients clients-floating))))))
-(defun exwm-layout--refresh ()
+(defun exwm-layout--refresh (&optional frame)
"Refresh layout."
- (let ((frame (selected-frame))
- covered-buffers ;EXWM-buffers covered by a new X window.
- vacated-windows ;Windows previously displaying
EXWM-buffers.
+ ;; `window-size-change-functions' sets this argument while
+ ;; `window-configuration-change-hook' makes the frame selected.
+ (unless frame
+ (setq frame (selected-frame)))
+ (let (covered-buffers ;EXWM-buffers covered by a new X window.
+ vacated-windows ;Windows previously displaying EXWM-buffers.
windows)
(if (not (exwm-workspace--workspace-p frame))
(if (frame-parameter frame 'exwm-outer-id)
@@ -566,6 +569,9 @@ See also `exwm-layout-enlarge-window'."
"Initialize layout module."
;; Auto refresh layout
(add-hook 'window-configuration-change-hook #'exwm-layout--refresh)
+ ;; The behavior of `window-configuration-change-hook' will be changed.
+ (when (fboundp 'window-pixel-width-before-size-change)
+ (add-hook 'window-size-change-functions #'exwm-layout--refresh))
(unless (exwm-workspace--minibuffer-own-frame-p)
;; Refresh when minibuffer grows
(add-hook 'minibuffer-setup-hook #'exwm-layout--on-minibuffer-setup t)