branch: externals/bufferlo commit 05c267ffbd76131d3422e0a1e389e0470c099806 Author: shipmints <shipmi...@gmail.com> Commit: shipmints <shipmi...@gmail.com>
Revert to manual steps in bufferlo--set-frame-geometry modify-frame-parameters does not work en masse across macOS and GTK platforms. Window managers seem to need to "catch up" so there are sit-for calls after each step. Frames are lowered and then raised to avoid flickering. --- bufferlo.el | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/bufferlo.el b/bufferlo.el index 7db8a0cb41..c381200236 100644 --- a/bufferlo.el +++ b/bufferlo.el @@ -2447,21 +2447,24 @@ display is a tty." Geometry set for FRAME or the current frame, if nil." ;; Some window managers need an extra display cycle for frame ;; changes to take effect from Emacs's perspective, so we add - ;; needed redisplay calls. + ;; needed sit-for calls. (setq frame (or frame (selected-frame))) (let-alist frame-geometry (when (and .left .top .width .height) ; defensive in case geometry stored from a tty (let ((frame-resize-pixelwise t) (frame-inhibit-implied-resize t)) - (modify-frame-parameters frame `((fullscreen . nil) ; fullscreen via default-frame-alist when set - (user-position . t) - (left . ,.left) - (top . ,.top) - (user-size . t) - ;; Clamp frame size restored from a larger display - (width . (text-pixels . ,(min .width (display-pixel-width)))) - (height . (text-pixels . ,(min .height (display-pixel-height)))))) - (sit-for 0))))) + (lower-frame frame) + (set-frame-parameter frame 'fullscreen nil) + (sit-for 0 t) + (set-frame-position frame .left .top) + (sit-for 0 t) + ;; Clamp to restore frames larger than the current display size. + (set-frame-size frame + (min .width (display-pixel-width)) + (min .height (display-pixel-height)) + 'pixelwise) + (sit-for 0 t) + (raise-frame frame))))) (defvar bufferlo--active-sets nil "Global active bufferlo sets.