message_scroll: Hide scroll to bottom button when using keypress.

We added  `is_keypress_scrolling` flag in `message_scroll.js` to keep
track of if keypress is used for scrolling.

Fixes #21844.
This commit is contained in:
Riken Shah
2022-07-05 06:38:13 +00:00
committed by Tim Abbott
parent 3ba89e7779
commit 5fdd93cf32
2 changed files with 22 additions and 1 deletions

View File

@@ -22,6 +22,7 @@ import * as list_util from "./list_util";
import * as message_edit from "./message_edit";
import * as message_flags from "./message_flags";
import * as message_lists from "./message_lists";
import * as message_scroll from "./message_scroll";
import * as message_view_header from "./message_view_header";
import * as muted_topics_ui from "./muted_topics_ui";
import * as narrow from "./narrow";
@@ -840,27 +841,33 @@ export function process_hotkey(e, hotkey) {
switch (event_name) {
case "down_arrow":
case "vim_down":
message_scroll.mark_keyboard_triggered_current_scroll();
navigate.down(true); // with_centering
return true;
case "up_arrow":
case "vim_up":
message_scroll.mark_keyboard_triggered_current_scroll();
navigate.up();
return true;
case "home":
message_scroll.mark_keyboard_triggered_current_scroll();
navigate.to_home();
return true;
case "end":
case "G_end":
message_scroll.mark_keyboard_triggered_current_scroll();
navigate.to_end();
return true;
case "page_up":
case "vim_page_up":
case "shift_spacebar":
message_scroll.mark_keyboard_triggered_current_scroll();
navigate.page_up();
return true;
case "page_down":
case "vim_page_down":
case "spacebar":
message_scroll.mark_keyboard_triggered_current_scroll();
navigate.page_down();
return true;
case "copy_with_c":

View File

@@ -25,6 +25,13 @@ export function suppress_selection_update_on_next_scroll() {
update_selection_on_next_scroll = false;
}
// Whether a keyboard shortcut is triggering a message feed scroll event.
let keyboard_triggered_current_scroll = false;
export function mark_keyboard_triggered_current_scroll() {
keyboard_triggered_current_scroll = true;
}
let loading_older_messages_indicator_showing = false;
let loading_newer_messages_indicator_showing = false;
@@ -217,7 +224,14 @@ export function scroll_finished() {
let scroll_timer;
function scroll_finish() {
actively_scrolling = true;
// Don't present the "scroll to bottom" widget if the current
// scroll was triggered by the keyboard.
if (!keyboard_triggered_current_scroll) {
show_scroll_to_bottom_button();
}
keyboard_triggered_current_scroll = false;
clearTimeout(scroll_timer);
scroll_timer = setTimeout(scroll_finished, 100);
}