]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/doc-view.el: Fix "can't resize root window" error
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 7 Oct 2020 14:51:35 +0000 (10:51 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 8 Oct 2020 13:44:34 +0000 (09:44 -0400)
(doc-view-fit-window-to-page): Change approach to detect when the
frame needs to be resized.

lisp/doc-view.el

index 8aaf38aab213bdbc4932e05f361a538c1621e262..02d89650b8b0451fafa7260ab3c949a2193c8f93 100644 (file)
@@ -910,17 +910,27 @@ Resize the containing frame if needed."
          (width-diff  (- img-width  win-width))
          (height-diff (- img-height win-height))
          (new-frame-params
+          ;; If we can't resize the window, try and resize the frame.
+          ;; We used to compare the `window-width/height` and the
+          ;; `frame-width/height` instead of catching the errors, but
+          ;; it's too fiddly (e.g. in the presence of the miniwindow,
+          ;; the height the frame should be equal to the height of the
+          ;; root window +1).
           (append
-           (if (= (window-width) (frame-width))
-               `((width  . (text-pixels
-                            . ,(+ (frame-text-width) width-diff))))
-             (enlarge-window (/ width-diff (frame-char-width)) 'horiz)
-             nil)
-           (if (= (window-height) (frame-height))
-               `((height  . (text-pixels
-                             . ,(+ (frame-text-height) height-diff))))
-             (enlarge-window (/ height-diff (frame-char-height)) nil)
-             nil))))
+           (condition-case nil
+               (progn
+                 (enlarge-window (/ width-diff (frame-char-width)) 'horiz)
+                 nil)
+             (error
+              `((width  . (text-pixels
+                           . ,(+ (frame-text-width) width-diff))))))
+           (condition-case nil
+               (progn
+                 (enlarge-window (/ height-diff (frame-char-height)) nil)
+                 nil)
+             (error
+              `((height  . (text-pixels
+                            . ,(+ (frame-text-height) height-diff)))))))))
     (when new-frame-params
       (modify-frame-parameters (selected-frame) new-frame-params))))