emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 0e739909ab: Fix image-mode-fit-frame some more


From: Lars Ingebrigtsen
Subject: master 0e739909ab: Fix image-mode-fit-frame some more
Date: Thu, 24 Mar 2022 04:55:03 -0400 (EDT)

branch: master
commit 0e739909abb679812484e2ddbe8483eb2dd5c815
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    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 863d014cdc..d7dfb4336b 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
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]