diff options
| author | Eli Zaretskii | 2021-08-19 15:24:14 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2021-08-19 15:24:14 +0300 |
| commit | 4bd7be2b8f9420a11d6d06fed6128e082f4e6792 (patch) | |
| tree | 19d0b240d936d31cff86e719d543a5a194b3e52b /src | |
| parent | 6276f73115a0e976ea1e1cfdec231ca6c2396c88 (diff) | |
| download | emacs-4bd7be2b8f9420a11d6d06fed6128e082f4e6792.tar.gz emacs-4bd7be2b8f9420a11d6d06fed6128e082f4e6792.zip | |
Fix errors with hscrolling mini-windows under truncate-lines
* src/xdisp.c (hscroll_window_tree): Disallow hscroll in
mini-windows that display echo-area messages. (Bug#50096)
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index ada9ed6c22b..dd2ceda023d 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -11771,7 +11771,7 @@ display_echo_area (struct window *w) | |||
| 11771 | /* If there is no message, we must call display_echo_area_1 | 11771 | /* If there is no message, we must call display_echo_area_1 |
| 11772 | nevertheless because it resizes the window. But we will have to | 11772 | nevertheless because it resizes the window. But we will have to |
| 11773 | reset the echo_area_buffer in question to nil at the end because | 11773 | reset the echo_area_buffer in question to nil at the end because |
| 11774 | with_echo_area_buffer will sets it to an empty buffer. */ | 11774 | with_echo_area_buffer will set it to an empty buffer. */ |
| 11775 | bool i = display_last_displayed_message_p; | 11775 | bool i = display_last_displayed_message_p; |
| 11776 | /* According to the C99, C11 and C++11 standards, the integral value | 11776 | /* According to the C99, C11 and C++11 standards, the integral value |
| 11777 | of a "bool" is always 0 or 1, so this array access is safe here, | 11777 | of a "bool" is always 0 or 1, so this array access is safe here, |
| @@ -14898,7 +14898,15 @@ hscroll_window_tree (Lisp_Object window) | |||
| 14898 | 14898 | ||
| 14899 | if (WINDOWP (w->contents)) | 14899 | if (WINDOWP (w->contents)) |
| 14900 | hscrolled_p |= hscroll_window_tree (w->contents); | 14900 | hscrolled_p |= hscroll_window_tree (w->contents); |
| 14901 | else if (w->cursor.vpos >= 0) | 14901 | else if (w->cursor.vpos >= 0 |
| 14902 | /* Don't allow hscroll in mini-windows that display | ||
| 14903 | echo-area messages. This is because desired_matrix | ||
| 14904 | of such windows was prepared while momentarily | ||
| 14905 | switched to an echo-area buffer, which is different | ||
| 14906 | from w->contents, and wew simply cannot hscroll such | ||
| 14907 | windows safely. */ | ||
| 14908 | && !(w == XWINDOW (echo_area_window) | ||
| 14909 | && !NILP (echo_area_buffer[0]))) | ||
| 14902 | { | 14910 | { |
| 14903 | int h_margin; | 14911 | int h_margin; |
| 14904 | int text_area_width; | 14912 | int text_area_width; |