diff --git a/src/ui/window.c b/src/ui/window.c index 528e04f7..cc76bf02 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -705,6 +705,7 @@ win_page_down(ProfWin* window, int scroll_size) int* page_start = &(window->layout->y_pos); int page_space = getmaxy(stdscr) - 4; int page_start_initial = *page_start; + if (scroll_size == 0) scroll_size = page_space; win_scroll_state_t* scroll_state = &window->scroll_state; @@ -713,7 +714,11 @@ win_page_down(ProfWin* window, int scroll_size) *page_start += scroll_size; // Scrolled down after reaching the bottom of the page - if (((*page_start > total_rows_with_unreaded - page_space) || ((*page_start == total_rows_with_unreaded) && (*page_start >= total_rows_with_unreaded))) && window->type == WIN_CHAT) { + gboolean past_bottom = *page_start > total_rows_with_unreaded - page_space; + gboolean at_page_space_and_past_unread = (*page_start == page_space && *page_start >= total_rows_with_unreaded); + gboolean is_chat = window->type == WIN_CHAT; + + if ((past_bottom || at_page_space_and_past_unread) && is_chat) { int bf_size = buffer_size(window->layout->buffer); if (bf_size > 0 && *scroll_state != WIN_SCROLL_REACHED_BOTTOM) { // How many lines are left until end of the screen