Fix scroll/paging state and buffer handling #45
@@ -701,11 +701,11 @@ void
|
||||
win_page_down(ProfWin* window, int scroll_size)
|
||||
{
|
||||
int total_rows = getcury(window->layout->win);
|
||||
int total_rows_with_unreaded = total_rows + window->layout->unread_msg;
|
||||
int total_rows_with_unread = total_rows + window->layout->unread_msg;
|
||||
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;
|
||||
@@ -714,8 +714,8 @@ win_page_down(ProfWin* window, int scroll_size)
|
||||
*page_start += scroll_size;
|
||||
|
||||
|
jabber.developer marked this conversation as resolved
Outdated
|
||||
// Scrolled down after reaching the bottom of the page
|
||||
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 past_bottom = *page_start > total_rows_with_unread - page_space;
|
||||
gboolean at_page_space_and_past_unread = (*page_start == page_space && *page_start >= total_rows_with_unread);
|
||||
gboolean is_chat = window->type == WIN_CHAT;
|
||||
|
||||
if ((past_bottom || at_page_space_and_past_unread) && is_chat) {
|
||||
|
||||
Reference in New Issue
Block a user
At this point, it's really hard to track what this condition is doing. I suggest that we split it into variables with descriptive names so we can understand what's going on in the future