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.

Reply via email to