Subject: Re: bug#54038: 29.0.50; doc-view cannot show different pages in different tabs

From: Juri Linkov <[email-masked]>
Date: Fri, 18 Feb 2022 10:11:21 +0200

> But, how can I get my desired behaviour tho?  If I create a new tab
> using C-x t 2, it breaks doc-view in a different way.  I am finding it
> hard to describe it in text, so I would appreciate it if you can try it
> out for yourself: essentially, C-x t 2, and then try changing pages.
> Doc-view doesn't show the correct image but the page number in the
> modeline changes.

Please try this patch with 'C-x t 2' (whereas 'C-x t n' will be fixed later).
The problem is that when 'image-mode-winprops' does window cleanup,
it doesn't take into account windows saved in tabs.

diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index 5bee155460..c127df12ae 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -179,7 +179,7 @@ image-mode-reapply-winprops
     ;; Beware: this call to image-mode-winprops can't be optimized away,
     ;; because it not only gets the winprops data but sets it up if needed
     ;; (e.g. it's used by doc-view to display the image in a new window).
-    (let* ((winprops (image-mode-winprops nil t))
+    (let* ((winprops (image-mode-winprops nil nil))
            (hscroll (image-mode-window-get 'hscroll winprops))
            (vscroll (image-mode-window-get 'vscroll winprops)))
       (when (image-get-display-property) ;Only do it if we display an image!