From 9c90a31d3579a92a9e3fa37b19ef58676a1aff08 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Sat, 7 Jun 2008 10:08:53 +0200 Subject: [PATCH] Fix display bug with prefix when filters are enable: do not count prefix length if line is not displayed --- src/gui/gui-chat.c | 9 ++++++--- src/gui/gui-filter.c | 8 ++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/gui/gui-chat.c b/src/gui/gui-chat.c index 57173f1e8..3becf4af1 100644 --- a/src/gui/gui-chat.c +++ b/src/gui/gui-chat.c @@ -705,8 +705,6 @@ gui_chat_line_add (struct t_gui_buffer *buffer, time_t date, strdup (prefix) : ((date != 0) ? strdup ("") : NULL); new_line->prefix_length = (prefix) ? gui_chat_strlen_screen (prefix) : 0; - if (new_line->prefix_length > buffer->prefix_max_length) - buffer->prefix_max_length = new_line->prefix_length; new_line->message = (message) ? strdup (message) : strdup (""); new_line->highlight = gui_chat_line_has_highlight (buffer, new_line); if (new_line->highlight) @@ -724,7 +722,12 @@ gui_chat_line_add (struct t_gui_buffer *buffer, time_t date, /* check if line is filtered or not */ new_line->displayed = gui_filter_check_line (buffer, new_line); - if (!new_line->displayed) + if (new_line->displayed) + { + if (new_line->prefix_length > buffer->prefix_max_length) + buffer->prefix_max_length = new_line->prefix_length; + } + else { if (!buffer->lines_hidden) { diff --git a/src/gui/gui-filter.c b/src/gui/gui-filter.c index 6c2047bf3..53070f068 100644 --- a/src/gui/gui-filter.c +++ b/src/gui/gui-filter.c @@ -99,11 +99,19 @@ gui_filter_buffer (struct t_gui_buffer *buffer) lines_hidden = 0; + buffer->prefix_max_length = 0; + for (ptr_line = buffer->lines; ptr_line; ptr_line = ptr_line->next_line) { line_displayed = gui_filter_check_line (buffer, ptr_line); + if (line_displayed + && (ptr_line->prefix_length > buffer->prefix_max_length)) + { + buffer->prefix_max_length = ptr_line->prefix_length; + } + /* force chat refresh if at least one line changed */ if (ptr_line->displayed != line_displayed) gui_buffer_ask_chat_refresh (buffer, 2);