diff --git a/ChangeLog b/ChangeLog index 199e293df..35b5062b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,13 @@ WeeChat - Wee Enhanced Environment for Chat =========================================== -ChangeLog - 2005-02-12 +ChangeLog - 2005-02-13 Version 0.1.1 (under dev!): * on server buffer, only server messages are logged * plugins messages are logged with new config option (log_plugin_msg) + * fixed display bugs when many windows are opened Version 0.1.0 (2005-02-12): * improved /window command: now split and merge are ok diff --git a/src/gui/curses/gui-display.c b/src/gui/curses/gui-display.c index 1fa32908e..4a32bfb50 100644 --- a/src/gui/curses/gui-display.c +++ b/src/gui/curses/gui-display.c @@ -1673,6 +1673,7 @@ gui_window_split_horiz (t_gui_window *window) /* assign same buffer for new window (top window) */ new_window->buffer = window->buffer; + new_window->buffer->num_displayed++; gui_switch_to_buffer (window, window->buffer); @@ -1705,6 +1706,7 @@ gui_window_split_vertic (t_gui_window *window) /* assign same buffer for new window (right window) */ new_window->buffer = window->buffer; + new_window->buffer->num_displayed++; gui_switch_to_buffer (window, window->buffer); @@ -2227,7 +2229,7 @@ gui_add_message (t_gui_buffer *buffer, int type, int color, char *message) if (pos) { pos[0] = '\n'; - if ((buffer->num_displayed > 0) && (gui_current_window->sub_lines == 0)) + if ((buffer->num_displayed > 0) /*&& (gui_current_window->sub_lines == 0)*/) { /*if ((buffer->window->win_chat_cursor_y + gui_get_line_num_splits (buffer, buffer->last_line)) > diff --git a/src/gui/gui-common.c b/src/gui/gui-common.c index 28c94e44c..f64d79bea 100644 --- a/src/gui/gui-common.c +++ b/src/gui/gui-common.c @@ -337,6 +337,9 @@ gui_infobar_printf (int time_displayed, int color, char *message, ...) void gui_window_free (t_gui_window *window) { + if (window->buffer->num_displayed > 0) + window->buffer->num_displayed--; + /* remove window from windows list */ if (window->prev_window) window->prev_window->next_window = window->next_window; diff --git a/src/irc/irc-recv.c b/src/irc/irc-recv.c index 23439076e..85f43188e 100644 --- a/src/irc/irc-recv.c +++ b/src/irc/irc-recv.c @@ -628,6 +628,7 @@ irc_cmd_recv_nick (t_irc_server *server, char *host, char *arguments) t_irc_channel *ptr_channel; t_irc_nick *ptr_nick; int nick_is_me; + t_gui_window *ptr_win; t_gui_buffer *ptr_buffer; /* no host => we can't identify sender of message! */ @@ -698,9 +699,18 @@ irc_cmd_recv_nick (t_irc_server *server, char *host, char *arguments) { free (server->nick); server->nick = strdup (arguments); + gui_draw_buffer_status (gui_current_window->buffer, 1); + for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) + { + if (ptr_win->buffer->server == server) + gui_draw_buffer_input (ptr_win->buffer, 1); + } + } + else + { + gui_draw_buffer_status (gui_current_window->buffer, 1); + gui_draw_buffer_input (gui_current_window->buffer, 1); } - gui_draw_buffer_status (gui_current_window->buffer, 1); - gui_draw_buffer_input (gui_current_window->buffer, 1); return 0; } diff --git a/weechat/ChangeLog b/weechat/ChangeLog index 199e293df..35b5062b0 100644 --- a/weechat/ChangeLog +++ b/weechat/ChangeLog @@ -1,12 +1,13 @@ WeeChat - Wee Enhanced Environment for Chat =========================================== -ChangeLog - 2005-02-12 +ChangeLog - 2005-02-13 Version 0.1.1 (under dev!): * on server buffer, only server messages are logged * plugins messages are logged with new config option (log_plugin_msg) + * fixed display bugs when many windows are opened Version 0.1.0 (2005-02-12): * improved /window command: now split and merge are ok diff --git a/weechat/src/gui/curses/gui-display.c b/weechat/src/gui/curses/gui-display.c index 1fa32908e..4a32bfb50 100644 --- a/weechat/src/gui/curses/gui-display.c +++ b/weechat/src/gui/curses/gui-display.c @@ -1673,6 +1673,7 @@ gui_window_split_horiz (t_gui_window *window) /* assign same buffer for new window (top window) */ new_window->buffer = window->buffer; + new_window->buffer->num_displayed++; gui_switch_to_buffer (window, window->buffer); @@ -1705,6 +1706,7 @@ gui_window_split_vertic (t_gui_window *window) /* assign same buffer for new window (right window) */ new_window->buffer = window->buffer; + new_window->buffer->num_displayed++; gui_switch_to_buffer (window, window->buffer); @@ -2227,7 +2229,7 @@ gui_add_message (t_gui_buffer *buffer, int type, int color, char *message) if (pos) { pos[0] = '\n'; - if ((buffer->num_displayed > 0) && (gui_current_window->sub_lines == 0)) + if ((buffer->num_displayed > 0) /*&& (gui_current_window->sub_lines == 0)*/) { /*if ((buffer->window->win_chat_cursor_y + gui_get_line_num_splits (buffer, buffer->last_line)) > diff --git a/weechat/src/gui/gui-common.c b/weechat/src/gui/gui-common.c index 28c94e44c..f64d79bea 100644 --- a/weechat/src/gui/gui-common.c +++ b/weechat/src/gui/gui-common.c @@ -337,6 +337,9 @@ gui_infobar_printf (int time_displayed, int color, char *message, ...) void gui_window_free (t_gui_window *window) { + if (window->buffer->num_displayed > 0) + window->buffer->num_displayed--; + /* remove window from windows list */ if (window->prev_window) window->prev_window->next_window = window->next_window; diff --git a/weechat/src/irc/irc-recv.c b/weechat/src/irc/irc-recv.c index 23439076e..85f43188e 100644 --- a/weechat/src/irc/irc-recv.c +++ b/weechat/src/irc/irc-recv.c @@ -628,6 +628,7 @@ irc_cmd_recv_nick (t_irc_server *server, char *host, char *arguments) t_irc_channel *ptr_channel; t_irc_nick *ptr_nick; int nick_is_me; + t_gui_window *ptr_win; t_gui_buffer *ptr_buffer; /* no host => we can't identify sender of message! */ @@ -698,9 +699,18 @@ irc_cmd_recv_nick (t_irc_server *server, char *host, char *arguments) { free (server->nick); server->nick = strdup (arguments); + gui_draw_buffer_status (gui_current_window->buffer, 1); + for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) + { + if (ptr_win->buffer->server == server) + gui_draw_buffer_input (ptr_win->buffer, 1); + } + } + else + { + gui_draw_buffer_status (gui_current_window->buffer, 1); + gui_draw_buffer_input (gui_current_window->buffer, 1); } - gui_draw_buffer_status (gui_current_window->buffer, 1); - gui_draw_buffer_input (gui_current_window->buffer, 1); return 0; }