branch: externals/bufferlo
commit 05c267ffbd76131d3422e0a1e389e0470c099806
Author: shipmints <[email protected]>
Commit: shipmints <[email protected]>
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.