summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2008-04-16 14:44:02 +0200
committerSebastien Helleu <flashcode@flashtux.org>2008-04-16 14:44:02 +0200
commitae98666bc6111d1940d3b14fc4566b262cba2c87 (patch)
tree3bf80e92854c46b8fcef0270cf3df94cad028b6c /src/gui
parent7489ec9a4041039719334c9d0406e31775132cc7 (diff)
downloadweechat-ae98666bc6111d1940d3b14fc4566b262cba2c87.zip
Added "toggle" value for /set on boolean options, fixed refresh bugs, added option type for infolist "options"
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/curses/gui-curses-chat.c326
-rw-r--r--src/gui/curses/gui-curses-window.c12
-rw-r--r--src/gui/gui-action.c18
-rw-r--r--src/gui/gui-bar.c3
-rw-r--r--src/gui/gui-buffer.c56
-rw-r--r--src/gui/gui-buffer.h8
-rw-r--r--src/gui/gui-chat.c8
-rw-r--r--src/gui/gui-filter.c2
-rw-r--r--src/gui/gui-nicklist.c8
-rw-r--r--src/gui/gui-window.c14
10 files changed, 184 insertions, 271 deletions
diff --git a/src/gui/curses/gui-curses-chat.c b/src/gui/curses/gui-curses-chat.c
index 497a25ac2..8fabd0b02 100644
--- a/src/gui/curses/gui-curses-chat.c
+++ b/src/gui/curses/gui-curses-chat.c
@@ -1133,17 +1133,8 @@ gui_chat_draw (struct t_gui_buffer *buffer, int erase)
{
struct t_gui_window *ptr_win;
struct t_gui_line *ptr_line;
- /*t_irc_dcc *dcc_first, *dcc_selected, *ptr_dcc;*/
char format_empty[32];
int i, line_pos, count, old_scroll, y_start, y_end;
- /*int j, num_bars;
- unsigned long pct_complete;
- char *unit_name[] = { N_("bytes"), N_("KB"), N_("MB"), N_("GB") };
- char *unit_format[] = { "%.0f", "%.1f", "%.02f", "%.02f" };
- float unit_divide[] = { 1, 1024, 1024*1024, 1024*1024*1024 };
- int num_unit;
- char format[32], date[128], *buf;
- struct tm *date_tmp;*/
if (!gui_ok)
return;
@@ -1168,254 +1159,119 @@ gui_chat_draw (struct t_gui_buffer *buffer, int erase)
gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_chat,
GUI_COLOR_CHAT);
- /*if (buffer->type == GUI_BUFFER_TYPE_DCC)
+ ptr_win->win_chat_cursor_x = 0;
+ ptr_win->win_chat_cursor_y = 0;
+
+ switch (ptr_win->buffer->type)
{
- i = 0;
- dcc_first = (ptr_win->dcc_first) ? (t_irc_dcc *) ptr_win->dcc_first : irc_dcc_list;
- dcc_selected = (ptr_win->dcc_selected) ? (t_irc_dcc *) ptr_win->dcc_selected : irc_dcc_list;
- for (ptr_dcc = dcc_first; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
- {
- if (i >= ptr_win->win_chat_height - 1)
- break;
+ case GUI_BUFFER_TYPE_FORMATED:
+ /* display at position of scrolling */
+ if (ptr_win->start_line)
+ {
+ ptr_line = ptr_win->start_line;
+ line_pos = ptr_win->start_line_pos;
+ }
+ else
+ {
+ /* look for first line to display, starting from last line */
+ ptr_line = NULL;
+ line_pos = 0;
+ gui_chat_calculate_line_diff (ptr_win, &ptr_line, &line_pos,
+ (-1) * (ptr_win->win_chat_height - 1));
+ }
- // nickname and filename
- gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_chat,
- (ptr_dcc == dcc_selected) ?
- GUI_COLOR_DCC_SELECTED : GUI_COLOR_WIN_CHAT);
- mvwprintw (GUI_CURSES(ptr_win)->win_chat, i, 0, "%s %-16s ",
- (ptr_dcc == dcc_selected) ? "***" : " ",
- ptr_dcc->nick);
- buf = weechat_iconv_from_internal (NULL,
- (IRC_DCC_IS_CHAT(ptr_dcc->type)) ?
- _(ptr_dcc->filename) : ptr_dcc->filename);
- wprintw (GUI_CURSES(ptr_win)->win_chat, "%s",
- (buf) ? buf : ((IRC_DCC_IS_CHAT(ptr_dcc->type)) ?
- _(ptr_dcc->filename) : ptr_dcc->filename));
- if (buf)
- free (buf);
- if (IRC_DCC_IS_FILE(ptr_dcc->type))
+ if (line_pos > 0)
{
- if (ptr_dcc->filename_suffix > 0)
- wprintw (GUI_CURSES(ptr_win)->win_chat, " (.%d)",
- ptr_dcc->filename_suffix);
+ /* display end of first line at top of screen */
+ gui_chat_display_line (ptr_win, ptr_line,
+ gui_chat_display_line (ptr_win,
+ ptr_line,
+ 0, 1) -
+ line_pos, 0);
+ ptr_line = gui_chat_get_next_line_displayed (ptr_line);
+ ptr_win->first_line_displayed = 0;
}
+ else
+ ptr_win->first_line_displayed =
+ (ptr_line == gui_chat_get_first_line_displayed (ptr_win->buffer));
- // status
- gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_chat,
- (ptr_dcc == dcc_selected) ?
- GUI_COLOR_DCC_SELECTED : GUI_COLOR_WIN_CHAT);
- mvwprintw (GUI_CURSES(ptr_win)->win_chat, i + 1, 0, "%s %s ",
- (ptr_dcc == dcc_selected) ? "***" : " ",
- (IRC_DCC_IS_RECV(ptr_dcc->type)) ? "-->>" : "<<--");
- gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_chat,
- GUI_COLOR_DCC_WAITING + ptr_dcc->status);
- buf = weechat_iconv_from_internal (NULL, _(irc_dcc_status_string[ptr_dcc->status]));
- wprintw (GUI_CURSES(ptr_win)->win_chat, "%-10s",
- (buf) ? buf : _(irc_dcc_status_string[ptr_dcc->status]));
- if (buf)
- free (buf);
+ /* display lines */
+ count = 0;
+ while (ptr_line && (ptr_win->win_chat_cursor_y <= ptr_win->win_chat_height - 1))
+ {
+ count = gui_chat_display_line (ptr_win, ptr_line, 0, 0);
+ ptr_line = gui_chat_get_next_line_displayed (ptr_line);
+ }
+
+ old_scroll = ptr_win->scroll;
+
+ ptr_win->scroll = (ptr_win->win_chat_cursor_y > ptr_win->win_chat_height - 1);
- // other infos
- gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_chat,
- (ptr_dcc == dcc_selected) ?
- GUI_COLOR_DCC_SELECTED : GUI_COLOR_WIN_CHAT);
- if (IRC_DCC_IS_FILE(ptr_dcc->type))
+ /* check if last line of buffer is entirely displayed and scrolling */
+ /* if so, disable scroll indicator */
+ if (!ptr_line && ptr_win->scroll)
{
- wprintw (GUI_CURSES(ptr_win)->win_chat, " [");
- if (ptr_dcc->size == 0)
- {
- if (ptr_dcc->status == IRC_DCC_DONE)
- num_bars = 10;
- else
- num_bars = 0;
- }
- else
- num_bars = (int)((((float)(ptr_dcc->pos)/(float)(ptr_dcc->size))*100) / 10);
- for (j = 0; j < num_bars - 1; j++)
- wprintw (GUI_CURSES(ptr_win)->win_chat, "=");
- if (num_bars > 0)
- wprintw (GUI_CURSES(ptr_win)->win_chat, ">");
- for (j = 0; j < 10 - num_bars; j++)
- wprintw (GUI_CURSES(ptr_win)->win_chat, " ");
-
- if (ptr_dcc->size < 1024*10)
- num_unit = 0;
- else if (ptr_dcc->size < 1024*1024)
- num_unit = 1;
- else if (ptr_dcc->size < 1024*1024*1024)
- num_unit = 2;
- else
- num_unit = 3;
- if (ptr_dcc->size == 0)
- {
- if (ptr_dcc->status == IRC_DCC_DONE)
- pct_complete = 100;
- else
- pct_complete = 0;
- }
- else
- pct_complete = (unsigned long)(((float)(ptr_dcc->pos)/(float)(ptr_dcc->size))*100);
- wprintw (GUI_CURSES(ptr_win)->win_chat, "] %3lu%% ",
- pct_complete);
- sprintf (format, "%s %%s / %s %%s",
- unit_format[num_unit],
- unit_format[num_unit]);
- wprintw (GUI_CURSES(ptr_win)->win_chat, format,
- ((float)(ptr_dcc->pos)) / ((float)(unit_divide[num_unit])),
- unit_name[num_unit],
- ((float)(ptr_dcc->size)) / ((float)(unit_divide[num_unit])),
- unit_name[num_unit]);
-
- if (ptr_dcc->bytes_per_sec < 1024*1024)
- num_unit = 1;
- else if (ptr_dcc->bytes_per_sec < 1024*1024*1024)
- num_unit = 2;
- else
- num_unit = 3;
- wprintw (GUI_CURSES(ptr_win)->win_chat, " (");
- if (ptr_dcc->status == IRC_DCC_ACTIVE)
- {
- wprintw (GUI_CURSES(ptr_win)->win_chat, _("ETA"));
- wprintw (GUI_CURSES(ptr_win)->win_chat, ": %.2lu:%.2lu:%.2lu - ",
- ptr_dcc->eta / 3600,
- (ptr_dcc->eta / 60) % 60,
- ptr_dcc->eta % 60);
- }
- sprintf (format, "%s %%s/s)", unit_format[num_unit]);
- buf = weechat_iconv_from_internal (NULL, unit_name[num_unit]);
- wprintw (GUI_CURSES(ptr_win)->win_chat, format,
- ((float)ptr_dcc->bytes_per_sec) / ((float)(unit_divide[num_unit])),
- (buf) ? buf : unit_name[num_unit]);
- if (buf)
- free (buf);
+ if (count == gui_chat_display_line (ptr_win, ptr_win->buffer->last_line, 0, 1))
+ ptr_win->scroll = 0;
}
- else
+
+ if (ptr_win->scroll != old_scroll)
{
- date_tmp = localtime (&(ptr_dcc->start_time));
- strftime (date, sizeof (date) - 1, "%a, %d %b %Y %H:%M:%S", date_tmp);
- wprintw (GUI_CURSES(ptr_win)->win_chat, " %s", date);
+ hook_signal_send ("window_scrolled",
+ WEECHAT_HOOK_SIGNAL_POINTER, ptr_win);
}
- wclrtoeol (GUI_CURSES(ptr_win)->win_chat);
+ if (!ptr_win->scroll
+ && (ptr_win->start_line == gui_chat_get_first_line_displayed (ptr_win->buffer)))
+ {
+ ptr_win->start_line = NULL;
+ ptr_win->start_line_pos = 0;
+ }
- ptr_win->dcc_last_displayed = ptr_dcc;
- i += 2;
- }
- }
- else*/
- {
- ptr_win->win_chat_cursor_x = 0;
- ptr_win->win_chat_cursor_y = 0;
-
- switch (ptr_win->buffer->type)
- {
- case GUI_BUFFER_TYPE_FORMATED:
- /* display at position of scrolling */
- if (ptr_win->start_line)
- {
- ptr_line = ptr_win->start_line;
- line_pos = ptr_win->start_line_pos;
- }
- else
- {
- /* look for first line to display, starting from last line */
- ptr_line = NULL;
- line_pos = 0;
- gui_chat_calculate_line_diff (ptr_win, &ptr_line, &line_pos,
- (-1) * (ptr_win->win_chat_height - 1));
- }
-
- if (line_pos > 0)
- {
- /* display end of first line at top of screen */
- gui_chat_display_line (ptr_win, ptr_line,
- gui_chat_display_line (ptr_win,
- ptr_line,
- 0, 1) -
- line_pos, 0);
- ptr_line = gui_chat_get_next_line_displayed (ptr_line);
- ptr_win->first_line_displayed = 0;
- }
- else
- ptr_win->first_line_displayed =
- (ptr_line == gui_chat_get_first_line_displayed (ptr_win->buffer));
-
- /* display lines */
- count = 0;
- while (ptr_line && (ptr_win->win_chat_cursor_y <= ptr_win->win_chat_height - 1))
- {
- count = gui_chat_display_line (ptr_win, ptr_line, 0, 0);
+ /* cursor is below end line of chat window? */
+ if (ptr_win->win_chat_cursor_y > ptr_win->win_chat_height - 1)
+ {
+ ptr_win->win_chat_cursor_x = 0;
+ ptr_win->win_chat_cursor_y = ptr_win->win_chat_height - 1;
+ }
+ break;
+ case GUI_BUFFER_TYPE_FREE:
+ /* display at position of scrolling */
+ ptr_line = (ptr_win->start_line) ?
+ ptr_win->start_line : buffer->lines;
+ if (ptr_line)
+ {
+ if (!ptr_line->displayed)
ptr_line = gui_chat_get_next_line_displayed (ptr_line);
- }
-
- old_scroll = ptr_win->scroll;
-
- ptr_win->scroll = (ptr_win->win_chat_cursor_y > ptr_win->win_chat_height - 1);
-
- /* check if last line of buffer is entirely displayed and scrolling */
- /* if so, disable scroll indicator */
- if (!ptr_line && ptr_win->scroll)
- {
- if (count == gui_chat_display_line (ptr_win, ptr_win->buffer->last_line, 0, 1))
- ptr_win->scroll = 0;
- }
-
- if (ptr_win->scroll != old_scroll)
- {
- hook_signal_send ("window_scrolled",
- WEECHAT_HOOK_SIGNAL_POINTER, ptr_win);
- }
-
- if (!ptr_win->scroll
- && (ptr_win->start_line == gui_chat_get_first_line_displayed (ptr_win->buffer)))
- {
- ptr_win->start_line = NULL;
- ptr_win->start_line_pos = 0;
- }
-
- /* cursor is below end line of chat window? */
- if (ptr_win->win_chat_cursor_y > ptr_win->win_chat_height - 1)
- {
- ptr_win->win_chat_cursor_x = 0;
- ptr_win->win_chat_cursor_y = ptr_win->win_chat_height - 1;
- }
- break;
- case GUI_BUFFER_TYPE_FREE:
- /* display at position of scrolling */
- ptr_line = (ptr_win->start_line) ?
- ptr_win->start_line : buffer->lines;
if (ptr_line)
{
- if (!ptr_line->displayed)
- ptr_line = gui_chat_get_next_line_displayed (ptr_line);
- if (ptr_line)
+ y_start = (ptr_win->start_line) ? ptr_line->y : 0;
+ y_end = y_start + ptr_win->win_chat_height - 1;
+ while (ptr_line && (ptr_line->y <= y_end))
{
- y_start = (ptr_win->start_line) ? ptr_line->y : 0;
- y_end = y_start + ptr_win->win_chat_height - 1;
- while (ptr_line && (ptr_line->y <= y_end))
+ if (ptr_line->refresh_needed || erase)
{
- if (ptr_line->refresh_needed || erase)
- {
- gui_chat_display_line_y (ptr_win, ptr_line,
- ptr_line->y - y_start);
- }
- ptr_line = gui_chat_get_next_line_displayed (ptr_line);
+ gui_chat_display_line_y (ptr_win, ptr_line,
+ ptr_line->y - y_start);
}
+ ptr_line = gui_chat_get_next_line_displayed (ptr_line);
}
}
- }
+ }
+ break;
}
wnoutrefresh (GUI_CURSES(ptr_win)->win_chat);
- refresh ();
-
- if (buffer->type == GUI_BUFFER_TYPE_FREE)
- {
- for (ptr_line = buffer->lines; ptr_line;
- ptr_line = ptr_line->next_line)
- {
- ptr_line->refresh_needed = 0;
- }
- }
+ }
+ }
+
+ refresh ();
+
+ if (buffer->type == GUI_BUFFER_TYPE_FREE)
+ {
+ for (ptr_line = buffer->lines; ptr_line;
+ ptr_line = ptr_line->next_line)
+ {
+ ptr_line->refresh_needed = 0;
}
}
}
diff --git a/src/gui/curses/gui-curses-window.c b/src/gui/curses/gui-curses-window.c
index 38c7f69e6..9a49faa7d 100644
--- a/src/gui/curses/gui-curses-window.c
+++ b/src/gui/curses/gui-curses-window.c
@@ -843,7 +843,7 @@ gui_window_scroll_topic_left (struct t_gui_window *window)
window->win_title_start -= (window->win_width * 3) / 4;
if (window->win_title_start < 0)
window->win_title_start = 0;
- window->buffer->title_refresh_needed = 1;
+ gui_buffer_ask_title_refresh (window->buffer, 1);
}
/*
@@ -857,7 +857,7 @@ gui_window_scroll_topic_right (struct t_gui_window *window)
return;
window->win_title_start += (window->win_width * 3) / 4;
- window->buffer->title_refresh_needed = 1;
+ gui_buffer_ask_title_refresh (window->buffer, 1);
}
/*
@@ -875,7 +875,7 @@ gui_window_nick_beginning (struct t_gui_window *window)
if (window->win_nick_start > 0)
{
window->win_nick_start = 0;
- window->buffer->nicklist_refresh_needed = 1;
+ gui_buffer_ask_nicklist_refresh (window->buffer, 1);
}
}
}
@@ -904,7 +904,7 @@ gui_window_nick_end (struct t_gui_window *window)
if (new_start != window->win_nick_start)
{
window->win_nick_start = new_start;
- window->buffer->nicklist_refresh_needed = 1;
+ gui_buffer_ask_nicklist_refresh (window->buffer, 1);
}
}
}
@@ -926,7 +926,7 @@ gui_window_nick_page_up (struct t_gui_window *window)
window->win_nick_start -= (window->win_nick_num_max - 1);
if (window->win_nick_start <= 1)
window->win_nick_start = 0;
- window->buffer->nicklist_refresh_needed = 1;
+ gui_buffer_ask_nicklist_refresh (window->buffer, 1);
}
}
}
@@ -951,7 +951,7 @@ gui_window_nick_page_down (struct t_gui_window *window)
window->win_nick_start += (window->win_nick_num_max - 1);
else
window->win_nick_start += (window->win_nick_num_max - 2);
- window->buffer->nicklist_refresh_needed = 1;
+ gui_buffer_ask_nicklist_refresh (window->buffer, 1);
}
}
}
diff --git a/src/gui/gui-action.c b/src/gui/gui-action.c
index 906564c86..36bf593a3 100644
--- a/src/gui/gui-action.c
+++ b/src/gui/gui-action.c
@@ -684,8 +684,8 @@ gui_action_up (char *args)
((t_irc_dcc *)(window->dcc_first))->prev_dcc;
window->dcc_selected =
((t_irc_dcc *)(window->dcc_selected))->prev_dcc;
- gui_current_window->buffer->chat_refresh_needed = 1;
- gui_current_window->buffer->input_refresh_needed = 1;
+ gui_buffer_ask_chat_refresh (gui_current_window->buffer, 1);
+ gui_buffer_ask_input_refresh (gui_current_window->buffer, 1);
}
}
}
@@ -824,8 +824,8 @@ gui_action_down (char *args)
else
window->dcc_selected =
irc_dcc_list->next_dcc;
- gui_current_window->buffer->chat_refresh_needed = 1;
- gui_current_window->buffer->input_refresh_needed = 1;
+ gui_buffer_ask_chat_refresh (gui_current_window->buffer, 1);
+ gui_buffer_ask_input_refresh (gui_current_window->buffer, 1);
}
}
}
@@ -1300,8 +1300,8 @@ gui_action_scroll_previous_highlight (char *args)
window->start_line_pos = 0;
window->first_line_displayed =
(window->start_line == gui_current_window->buffer->lines);
- gui_current_window->buffer->chat_refresh_needed = 1;
- gui_current_window->buffer->input_refresh_needed = 1;
+ gui_buffer_ask_chat_refresh (gui_current_window->buffer, 1);
+ gui_buffer_ask_input_refresh (gui_current_window->buffer, 1);
return;
}
ptr_line = ptr_line->prev_line;
@@ -1337,8 +1337,8 @@ gui_action_scroll_next_highlight (char *args)
window->start_line_pos = 0;
window->first_line_displayed =
(window->start_line == gui_current_window->buffer->lines);
- gui_current_window->buffer->chat_refresh_needed = 1;
- gui_current_window->buffer->input_refresh_needed = 1;
+ gui_buffer_ask_chat_refresh (gui_current_window->buffer, 1);
+ gui_buffer_ask_input_refresh (gui_current_window->buffer, 1);
return;
}
ptr_line = ptr_line->next_line;
@@ -1370,7 +1370,7 @@ gui_action_scroll_unread (char *args)
gui_current_window->start_line_pos = 0;
gui_current_window->first_line_displayed =
(gui_current_window->start_line == gui_chat_get_first_line_displayed (gui_current_window->buffer));
- gui_current_window->buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (gui_current_window->buffer, 2);
gui_status_refresh_needed = 1;
}
}
diff --git a/src/gui/gui-bar.c b/src/gui/gui-bar.c
index 292f8e6c8..cfb0d78ae 100644
--- a/src/gui/gui-bar.c
+++ b/src/gui/gui-bar.c
@@ -293,6 +293,9 @@ gui_bar_config_check_size (void *data, struct t_config_option *option,
number = strtol (value, &error, 10);
if (error && !error[0])
{
+ if (number < 0)
+ return 0;
+
if (number <= ptr_bar->current_size
|| gui_bar_check_size_add (ptr_bar,
number - ptr_bar->current_size))
diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c
index ba6883123..98e6cb6ae 100644
--- a/src/gui/gui-buffer.c
+++ b/src/gui/gui-buffer.c
@@ -266,6 +266,50 @@ gui_buffer_get_pointer (struct t_gui_buffer *buffer, char *property)
}
/*
+ * gui_buffer_ask_title_refresh: set "title_refresh_needed" flag
+ */
+
+void
+gui_buffer_ask_title_refresh (struct t_gui_buffer *buffer, int refresh)
+{
+ if (refresh > buffer->title_refresh_needed)
+ buffer->title_refresh_needed = refresh;
+}
+
+/*
+ * gui_buffer_ask_chat_refresh: set "chat_refresh_needed" flag
+ */
+
+void
+gui_buffer_ask_chat_refresh (struct t_gui_buffer *buffer, int refresh)
+{
+ if (refresh > buffer->chat_refresh_needed)
+ buffer->chat_refresh_needed = refresh;
+}
+
+/*
+ * gui_buffer_ask_nicklist_refresh: set "nicklist_refresh_needed" flag
+ */
+
+void
+gui_buffer_ask_nicklist_refresh (struct t_gui_buffer *buffer, int refresh)
+{
+ if (refresh > buffer->nicklist_refresh_needed)
+ buffer->nicklist_refresh_needed = refresh;
+}
+
+/*
+ * gui_buffer_ask_input_refresh: set "input_refresh_needed" flag
+ */
+
+void
+gui_buffer_ask_input_refresh (struct t_gui_buffer *buffer, int refresh)
+{
+ if (refresh > buffer->input_refresh_needed)
+ buffer->input_refresh_needed = refresh;
+}
+
+/*
* gui_buffer_set_category: set category for a buffer
*/
@@ -324,7 +368,7 @@ gui_buffer_set_type (struct t_gui_buffer *buffer, enum t_gui_buffer_type type)
break;
}
buffer->type = type;
- buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (buffer, 2);
}
/*
@@ -337,7 +381,7 @@ gui_buffer_set_title (struct t_gui_buffer *buffer, char *new_title)
if (buffer->title)
free (buffer->title);
buffer->title = (new_title && new_title[0]) ? strdup (new_title) : NULL;
- buffer->title_refresh_needed = 1;
+ gui_buffer_ask_title_refresh (buffer, 1);
}
/*
@@ -373,7 +417,7 @@ gui_buffer_set_nicklist_display_groups (struct t_gui_buffer *buffer,
buffer->nicklist_display_groups = (display_groups) ? 1 : 0;
buffer->nicklist_visible_count = 0;
gui_nicklist_compute_visible_count (buffer, buffer->nicklist_root);
- buffer->nicklist_refresh_needed = 1;
+ gui_buffer_ask_nicklist_refresh (buffer, 1);
}
/*
@@ -386,7 +430,7 @@ gui_buffer_set_nick (struct t_gui_buffer *buffer, char *new_nick)
if (buffer->input_nick)
free (buffer->input_nick);
buffer->input_nick = (new_nick && new_nick[0]) ? strdup (new_nick) : NULL;
- buffer->input_refresh_needed = 1;
+ gui_buffer_ask_input_refresh (buffer, 1);
}
/*
@@ -680,7 +724,7 @@ gui_buffer_clear (struct t_gui_buffer *buffer)
}
}
- buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (buffer, 2);
gui_status_refresh_needed = 1;
}
@@ -694,7 +738,9 @@ gui_buffer_clear_all ()
struct t_gui_buffer *ptr_buffer;
for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer)
+ {
gui_buffer_clear (ptr_buffer);
+ }
}
/*
diff --git a/src/gui/gui-buffer.h b/src/gui/gui-buffer.h
index 21ac6f776..f292fa9be 100644
--- a/src/gui/gui-buffer.h
+++ b/src/gui/gui-buffer.h
@@ -160,6 +160,14 @@ extern char *gui_buffer_get_string (struct t_gui_buffer *buffer,
char *property);
extern void *gui_buffer_get_pointer (struct t_gui_buffer *buffer,
char *property);
+extern void gui_buffer_ask_title_refresh (struct t_gui_buffer *buffer,
+ int refresh);
+extern void gui_buffer_ask_chat_refresh (struct t_gui_buffer *buffer,
+ int refresh);
+extern void gui_buffer_ask_nicklist_refresh (struct t_gui_buffer *buffer,
+ int refresh);
+extern void gui_buffer_ask_input_refresh (struct t_gui_buffer *buffer,
+ int refresh);
extern void gui_buffer_set_category (struct t_gui_buffer *buffer,
char *category);
extern void gui_buffer_set_name (struct t_gui_buffer *buffer, char *name);
diff --git a/src/gui/gui-chat.c b/src/gui/gui-chat.c
index 16c0d3b82..42c08b144 100644
--- a/src/gui/gui-chat.c
+++ b/src/gui/gui-chat.c
@@ -573,7 +573,7 @@ gui_chat_line_free (struct t_gui_buffer *buffer, struct t_gui_line *line)
{
ptr_win->start_line = ptr_win->start_line->next_line;
ptr_win->start_line_pos = 0;
- ptr_win->buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (buffer, 2);
gui_status_refresh_needed = 1;
}
}
@@ -887,7 +887,7 @@ gui_chat_printf_date_tags (struct t_gui_buffer *buffer, time_t date,
if (gui_init_ok)
{
- buffer->chat_refresh_needed = 1;
+ gui_buffer_ask_chat_refresh (buffer, 1);
if (gui_add_hotlist
&& ((buffer->num_displayed == 0)
|| (gui_buffer_is_scrolled (buffer))))
@@ -937,7 +937,7 @@ gui_chat_printf_y (struct t_gui_buffer *buffer, int y, char *message, ...)
if (ptr_line && (ptr_line->y == y))
{
gui_chat_line_free (buffer, ptr_line);
- buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (buffer, 2);
}
}
}
@@ -953,7 +953,7 @@ gui_chat_printf_y (struct t_gui_buffer *buffer, int y, char *message, ...)
if (gui_init_ok)
{
gui_chat_line_add_y (buffer, y, buf);
- buffer->chat_refresh_needed = 1;
+ gui_buffer_ask_chat_refresh (buffer, 1);
}
else
string_iconv_fprintf (stdout, "%s\n", buf);
diff --git a/src/gui/gui-filter.c b/src/gui/gui-filter.c
index 12005ca72..b39debe3f 100644
--- a/src/gui/gui-filter.c
+++ b/src/gui/gui-filter.c
@@ -106,7 +106,7 @@ gui_filter_buffer (struct t_gui_buffer *buffer)
/* force chat refresh if at least one line changed */
if (ptr_line->displayed != line_displayed)
- buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (buffer, 2);
ptr_line->displayed = line_displayed;
diff --git a/src/gui/gui-nicklist.c b/src/gui/gui-nicklist.c
index 78ae1c6cd..63ab79fb1 100644
--- a/src/gui/gui-nicklist.c
+++ b/src/gui/gui-nicklist.c
@@ -195,7 +195,7 @@ gui_nicklist_add_group (struct t_gui_buffer *buffer,
if (buffer->nicklist_display_groups && visible)
{
- buffer->nicklist_refresh_needed = 1;
+ gui_buffer_ask_nicklist_refresh (buffer, 1);
buffer->nicklist_visible_count++;
gui_status_refresh_needed = 1;
}
@@ -337,7 +337,7 @@ gui_nicklist_add_nick (struct t_gui_buffer *buffer,
if (visible)
{
- buffer->nicklist_refresh_needed = 1;
+ gui_buffer_ask_nicklist_refresh (buffer, 1);
buffer->nicklist_visible_count++;
gui_status_refresh_needed = 1;
}
@@ -372,7 +372,7 @@ gui_nicklist_remove_nick (struct t_gui_buffer *buffer,
if (nick->visible)
{
- buffer->nicklist_refresh_needed = 1;
+ gui_buffer_ask_nicklist_refresh (buffer, 1);
if (buffer->nicklist_visible_count > 0)
buffer->nicklist_visible_count--;
gui_status_refresh_needed = 1;
@@ -427,7 +427,7 @@ gui_nicklist_remove_group (struct t_gui_buffer *buffer,
if (group->visible)
{
- buffer->nicklist_refresh_needed = 1;
+ gui_buffer_ask_nicklist_refresh (buffer, 1);
if (buffer->nicklist_display_groups
&& (buffer->nicklist_visible_count > 0))
buffer->nicklist_visible_count--;
diff --git a/src/gui/gui-window.c b/src/gui/gui-window.c
index 09b84f2f2..66761bfa2 100644
--- a/src/gui/gui-window.c
+++ b/src/gui/gui-window.c
@@ -637,7 +637,7 @@ gui_window_scroll (struct t_gui_window *window, char *scroll)
window->start_line_pos = 0;
window->first_line_displayed =
(window->start_line == gui_chat_get_first_line_displayed (window->buffer));
- window->buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (window->buffer, 2);
gui_status_refresh_needed = 1;
return;
}
@@ -680,7 +680,7 @@ gui_window_search_text (struct t_gui_window *window)
window->start_line_pos = 0;
window->first_line_displayed =
(window->start_line == gui_chat_get_first_line_displayed (window->buffer));
- window->buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (window->buffer, 2);
gui_status_refresh_needed = 1;
return 1;
}
@@ -709,7 +709,7 @@ gui_window_search_text (struct t_gui_window *window)
window->start_line_pos = 0;
window->first_line_displayed =
(window->start_line == window->buffer->lines);
- window->buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (window->buffer, 2);
gui_status_refresh_needed = 1;
return 1;
}
@@ -740,7 +740,7 @@ gui_window_search_start (struct t_gui_window *window)
strdup (window->buffer->input_buffer);
gui_input_delete_line (window->buffer);
gui_status_refresh_needed = 1;
- window->buffer->input_refresh_needed = 1;
+ gui_buffer_ask_input_refresh (window->buffer, 1);
}
/*
@@ -759,7 +759,7 @@ gui_window_search_restart (struct t_gui_window *window)
window->buffer->text_search_found = 1;
else
{
- window->buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (window->buffer, 2);
gui_status_refresh_needed = 1;
}
}
@@ -784,9 +784,9 @@ gui_window_search_stop (struct t_gui_window *window)
window->start_line = NULL;
window->start_line_pos = 0;
gui_hotlist_remove_buffer (window->buffer);
- window->buffer->chat_refresh_needed = 2;
+ gui_buffer_ask_chat_refresh (window->buffer, 2);
gui_status_refresh_needed = 1;
- window->buffer->input_refresh_needed = 1;
+ gui_buffer_ask_input_refresh (window->buffer, 1);
}
/*