From d7a86d25490167c07df5de8390826d2c82e85c33 Mon Sep 17 00:00:00 2001 From: Philip Date: Wed, 26 Aug 2015 11:33:29 +0000 Subject: [PATCH] Use `pre-redisplay-function` to detect mini-window resizes. Fixes https://github.com/ch11ng/exwm/issues/40 See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=21333 --- exwm-layout.el | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/exwm-layout.el b/exwm-layout.el index fe1645f..a9744ec 100644 --- a/exwm-layout.el +++ b/exwm-layout.el @@ -189,8 +189,8 @@ :height height)) (xcb:flush exwm--connection)))) -(defun exwm-layout--refresh () - "Refresh layout." +(defun exwm-layout--refresh (&rest args) + "Refresh layout. ARGS are ignored to run in abnormal hooks." (let ((frame (selected-frame)) (placeholder (get-buffer "*scratch*")) windows) @@ -236,21 +236,13 @@ (or exwm--floating-frame (not (eq frame exwm--frame)))) (set-window-buffer window placeholder))))))) -(defun exwm-layout--on-minibuffer-setup () - "Refresh layout when minibuffer grows." - (run-with-idle-timer 0.01 nil ;FIXME - (lambda () - (when (and (< 1 (window-height (minibuffer-window))) - (not (and (eq major-mode 'exwm-mode) - exwm--floating-frame))) - (exwm-layout--refresh))))) - (defun exwm-layout--init () "Initialize layout module." ;; Auto refresh layout (add-hook 'window-configuration-change-hook 'exwm-layout--refresh) - ;; Refresh when minibuffer grows - (add-hook 'minibuffer-setup-hook 'exwm-layout--on-minibuffer-setup t)) + ;; Refresh when minibuffer grows, if Emacs is new enough to detect it + (when (boundp 'pre-redisplay-function) + (add-function :before pre-redisplay-function 'exwm-layout--refresh)))