Fix scroll/paging state and buffer handling #45

Manually merged
jabber.developer merged 6 commits from playground/fix/scroll-stuck into master 2026-01-07 10:56:04 +00:00
3 changed files with 24 additions and 5 deletions
Showing only changes of commit ccb4bbac4a - Show all commits

View File

@@ -750,7 +750,8 @@ win_page_down(ProfWin* window, int scroll_size)
win_update_virtual(window);
}
// switch off page if no messages left to read
/*switch off page if no messages left to read
jabber.developer marked this conversation as resolved Outdated

Could you apply our standard formatting (should apply automatically on ctrl+shift+i in VSCode)? It will fix the CI

Could you apply our standard formatting (should apply automatically on `ctrl+shift+i` in VSCode)? It will fix the CI
TODO: update buffer end handling to check meassages just after last entry*/
if (*scroll_state == WIN_SCROLL_REACHED_BOTTOM) {
window->layout->paged = 0;
window->layout->unread_msg = 0;
@@ -1703,22 +1704,11 @@ static void
_win_printf(ProfWin* window, const char* show_char, int pad_indent, GDateTime* timestamp, int flags, theme_item_t theme_item, const char* const display_from, const char* const from_jid, const char* const message_id, const char* const message, ...)
{
/* Test code start
TODO:
- TOLERABLE check window->layout->paged handling for reliability (if buffer size is less than window size [SCROLLING] not set)
- make a propper condition check for differernt cases
- DONE add a user notification in header when new messages arrive while scrolling history
- DONE handle SCROLLED state properly in case of incominf messages (currently it is cleared before new message is printed)
Description: this code prevents printing and buffer when user is viewing message history [SCROLLING]
#warning "TEST CODE: temporary/test code present in window.c:1709 - remove before release"*/
/* Prevent printing and buffer update when user is viewing message history [SCROLLING]*/
if ((window->layout->paged) && wins_is_current(window)) {
jabber.developer marked this conversation as resolved Outdated

Nice place for condition and logic.

I feel that readability could be slightly improved without extra pair of parentheses in (window->layout->paged).

Nice place for condition and logic. I feel that readability could be slightly improved without extra pair of parentheses in `(window->layout->paged)`.
window->layout->unread_msg++;
return;
}
/* Test code end */
if (timestamp == NULL) {
timestamp = g_date_time_new_now_local();