fix(ui): keep messages visible after scrolling in non-chat windows #123

Manually merged
jabber.developer merged 5 commits from fix/scroll-non-chat-windows into master 2026-05-16 15:48:09 +00:00
2 changed files with 15 additions and 8 deletions
Showing only changes of commit ef0dd74dc1 - Show all commits

View File

@@ -301,12 +301,6 @@ cl_ev_send_ai_msg(ProfAiWin* aiwin, const char* const message, const char* const
return;
}
/* Reset paged flag before printing user message.
* If the user scrolled up to view history, paged=1 would suppress
* the message in _win_printf(). Reset it here so the message displays. */
aiwin->window.layout->paged = 0;
aiwin->window.layout->unread_msg = 0;
// Display user message in AI window.
win_print_outgoing(&aiwin->window, ">>", id, NULL, message);

View File

@@ -1809,10 +1809,15 @@ 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, ...)
{
/* Prevent printing and buffer update when user is viewing message history [SCROLLING]*/
/* While the user is scrolled, bump the unread indicator. Only WIN_CHAT
* skips the buffer/render entirely — it can recover the message via
* chatwin_db_history on scroll-down. Other window types have no DB
* fallback, so the message must still be appended to the buffer and pad. */
if (window->layout->paged && wins_is_current(window)) {
window->layout->unread_msg++;
return;
if (window->type == WIN_CHAT) {
jabber.developer marked this conversation as resolved Outdated

it describes the behavior, which can be read from the code itself. It would only make sense to either add a concise explanation on WHY we do it, or to keep this stuff inside of the commit.

it describes the behavior, which can be read from the code itself. It would only make sense to either add a concise explanation on WHY we do it, or to keep this stuff inside of the commit.
return;
}
}
if (timestamp == NULL) {