From: Eli Zaretskii <eliz@gnu.org>
To: Ramon Diaz-Uriarte <r.diaz@uam.es>, Po Lu <luangruo@yahoo.com>
Cc: Rahguzar <rahguzar@zohomail.eu>,
rdiaz02@gmail.com, 70038@debbugs.gnu.org
Subject: bug#70038: 29.3.50; Shift up/down in buffer with images on M-x other-window with some fonts
Date: Sat, 06 Apr 2024 15:33:59 +0300 [thread overview]
Message-ID: <86bk6m3c20.fsf@gnu.org> (raw)
In-Reply-To: <87wmpm2rd7.fsf@zohomail.eu> (message from Rahguzar on Thu, 28 Mar 2024 18:24:32 +0100)
> From: Rahguzar <rahguzar@zohomail.eu>
> Cc: Eli Zaretskii <eliz@gnu.org>, 70038@debbugs.gnu.org
> Date: Thu, 28 Mar 2024 18:24:32 +0100
>
> I can also reproduce this now! And vertico mode can be replaced with the
> builtin icomplete-vertical-mode. So, the following recipe starting with
> emacs -Q works for me:
>
> 1) Paste
> (let ((height (/ (* 2 (frame-pixel-height)) 15)))
> (icomplete-vertical-mode)
> (defun pin-vscroll-down (win)
> (set-window-vscroll win (/ height 2) t))
> (let ((image1 (create-image "~/Downloads/image1.png" nil nil :height height))
> (image2 (create-image "~/Downloads/image2.png" nil nil :height height))
> (image3 (create-image "~/Downloads/image3.png" nil nil :height height)))
> (with-current-buffer (get-buffer-create "*image-scroll-test*")
> (insert " \n \n \n \n \n \n")
> (put-image image1 1)
> (put-image image2 5)
> (put-image image3 9)
> ;; With larger image sizes (goto-char 3)
> ;; also consistently triggers the problem.
> (goto-char 11)
> (add-hook 'pre-redisplay-functions #'pin-vscroll-down nil t))
> (split-window-right)
> (other-window 1)
> (switch-to-buffer "*image-scroll-test*")))
>
> into scratch buffer.
>
> 2) Evaluate the form above using `C-M-x`.
>
> 3) Type M-x t
>
> 4) Wait till minibuffer expands to show completions, then type `C-g` to
> quit minibuffer.
>
> 5) Typing `C-x 0` results in the window with images losing vscroll.
Po Lu, I'm looking at this part of redisplay_window:
force_start:
/* Handle case where place to start displaying has been specified,
unless the specified location is outside the accessible range. */
if (w->force_start)
{
/* We set this later on if we have to adjust point. */
int new_vpos = -1;
w->force_start = false;
/* The vscroll should be preserved in this case, since
`pixel-scroll-precision-mode' must continue working normally
when a mini-window is resized. (bug#55312) */
if (!w->preserve_vscroll_p || !window_frozen_p (w)) <<<<<<<<<<<<<<<
w->vscroll = 0;
w->preserve_vscroll_p = false;
w->window_end_valid = false;
where you added the condition for resetting w->vscroll in commit
fd8eaa72a61, and I'm thinking that perhaps the condition should be
if (!w->preserve_vscroll_p && !window_frozen_p (w))
instead? If not, can you explain why we use OR and not AND there?
Ramon, if you replace "||" with "&&" in the above condition, does the
problem go away for you also when you change fonts, as you described
in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70038#29 ?
next prev parent reply other threads:[~2024-04-06 12:33 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-27 20:25 bug#70038: 29.3.50; Shift up/down in buffer with images on M-x other-window with some fonts Ramon Diaz-Uriarte
2024-03-28 5:58 ` Eli Zaretskii
2024-03-28 7:52 ` Rahguzar via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-28 8:36 ` Eli Zaretskii
2024-03-28 16:12 ` Ramon Diaz-Uriarte
2024-03-28 16:59 ` Ramon Diaz-Uriarte
2024-03-28 17:24 ` Rahguzar via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-28 19:50 ` Rahguzar via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-03-31 18:43 ` Ramon Diaz-Uriarte
2024-04-06 12:33 ` Eli Zaretskii [this message]
2024-04-06 14:08 ` Eli Zaretskii
2024-04-06 14:20 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-07 8:24 ` martin rudalics via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-07 9:13 ` Eli Zaretskii
2024-04-07 10:12 ` martin rudalics via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-07 11:28 ` Eli Zaretskii
2024-04-08 9:07 ` martin rudalics via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-13 10:10 ` Eli Zaretskii
2024-04-14 8:31 ` martin rudalics via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-14 9:28 ` Eli Zaretskii
2024-04-15 9:23 ` martin rudalics via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-15 13:54 ` Eli Zaretskii
2024-04-17 8:02 ` martin rudalics via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-17 12:58 ` Eli Zaretskii
2024-04-28 8:51 ` martin rudalics via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-28 9:15 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-29 9:47 ` martin rudalics via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-29 12:51 ` Eli Zaretskii
2024-04-11 13:56 ` Ramon Diaz-Uriarte
2024-04-11 15:36 ` Eli Zaretskii
2024-04-12 16:43 ` Ramon Diaz-Uriarte
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86bk6m3c20.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=70038@debbugs.gnu.org \
--cc=luangruo@yahoo.com \
--cc=r.diaz@uam.es \
--cc=rahguzar@zohomail.eu \
--cc=rdiaz02@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.