From 0e739909abb679812484e2ddbe8483eb2dd5c815 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Thu, 24 Mar 2022 09:54:38 +0100 Subject: [PATCH] Fix image-mode-fit-frame some more * lisp/image-mode.el (image-mode-fit-frame): Use frame-text-width and fit-frame-to-buffer instead of computing things ourselves (bug#37630). This makes things work better across platforms. --- lisp/image-mode.el | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/lisp/image-mode.el b/lisp/image-mode.el index 863d014cdc4..d7dfb4336b9 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el @@ -419,12 +419,10 @@ window configuration prior to the last `image-mode-fit-frame' call." (interactive (list nil t)) (let* ((buffer (current-buffer)) - (display (image-get-display-property)) - (size (image-display-size display t)) (saved (frame-parameter frame 'image-mode-saved-params)) (window-configuration (current-window-configuration frame)) - (frame-width (frame-pixel-width frame)) - (frame-height (frame-pixel-height frame))) + (frame-width (frame-text-width frame)) + (frame-height (frame-text-height frame))) (with-selected-frame (or frame (selected-frame)) (if (and toggle saved (= (caar saved) frame-width) @@ -436,24 +434,16 @@ call." (set-frame-parameter frame 'image-mode-saved-params nil)) (delete-other-windows) (switch-to-buffer buffer t t) - (let* ((edges (window-inside-pixel-edges)) - (inner-width (- (nth 2 edges) (nth 0 edges))) - (inner-height (- (nth 3 edges) (nth 1 edges)))) - (set-frame-width frame (+ (ceiling (car size)) - (- frame-width inner-width)) - nil t) - (set-frame-height frame (+ (ceiling (cdr size)) - (- frame-height inner-height)) - nil t) - ;; The frame size after the above `set-frame-*' calls may - ;; differ from what we specified, due to window manager - ;; interference. We have to call `frame-width' and - ;; `frame-height' to get the actual results. - (set-frame-parameter frame 'image-mode-saved-params - (list (cons (frame-pixel-width frame) - (frame-pixel-height frame)) - (cons frame-width frame-height) - window-configuration))))))) + (fit-frame-to-buffer frame) + ;; The frame size after the above `set-frame-*' calls may + ;; differ from what we specified, due to window manager + ;; interference. We have to call `frame-width' and + ;; `frame-height' to get the actual results. + (set-frame-parameter frame 'image-mode-saved-params + (list (cons (frame-text-width frame) + (frame-text-height frame)) + (cons frame-width frame-height) + window-configuration)))))) ;;; Image Mode setup -- 2.39.2