From 5d4220a91f8aa1467302dac2e7a4bfdb7a017009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Mon, 14 Oct 2019 20:44:15 +0200 Subject: [PATCH] core: fix scrolling up in bare mode when switched to bare mode at the top of the buffer (closes #899, issue #978) --- ChangeLog.adoc | 1 + src/gui/curses/gui-curses-chat.c | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ChangeLog.adoc b/ChangeLog.adoc index e35556240..c9cebd96f 100644 --- a/ChangeLog.adoc +++ b/ChangeLog.adoc @@ -20,6 +20,7 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] New features:: + * core: fix scrolling up in bare mode when switched to bare mode at the top of the buffer (issue #899, issue #978) * core: add file weechat.desktop * core: add reverse of string for screen in evaluation of expressions with "revscr:" * core: add length of string (number of chars and on screen) in evaluation of expressions with "length:xxx" and "lengthscr:xxx" diff --git a/src/gui/curses/gui-curses-chat.c b/src/gui/curses/gui-curses-chat.c index 2904ecd32..024fae90a 100644 --- a/src/gui/curses/gui-curses-chat.c +++ b/src/gui/curses/gui-curses-chat.c @@ -2055,8 +2055,17 @@ gui_chat_draw_bare (struct t_gui_window *window) { /* display from top to bottom (starting with "start_line") */ y = 0; - ptr_line = (window->scroll->start_line) ? - window->scroll->start_line : gui_line_get_first_displayed (window->buffer); + if (window->scroll->start_line) + { + ptr_line = window->scroll->start_line; + window->scroll->first_line_displayed = + (ptr_line == gui_line_get_first_displayed (window->buffer)); + } + else + { + ptr_line = gui_line_get_first_displayed (window->buffer); + window->scroll->first_line_displayed = 1; + } while (ptr_line && (y < gui_term_lines)) { line = gui_chat_get_bare_line (ptr_line); @@ -2093,6 +2102,8 @@ gui_chat_draw_bare (struct t_gui_window *window) free (line); ptr_line = gui_line_get_prev_displayed (ptr_line); } + window->scroll->first_line_displayed = + (ptr_line == gui_line_get_first_displayed (window->buffer)); } /*