From 6b6def589072d0de669b096c802435c08b7f870b Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Sun, 30 Oct 2005 22:56:00 +0000 Subject: [PATCH] Fixed "jump to next server" action (was broken by new option "look_one_server_buffer") --- src/gui/gui-action.c | 10 ++++++---- src/gui/gui-common.c | 10 +++++----- src/gui/gui.h | 3 --- src/irc/irc-server.c | 1 + src/irc/irc.h | 1 + weechat/src/gui/gui-action.c | 10 ++++++---- weechat/src/gui/gui-common.c | 10 +++++----- weechat/src/gui/gui.h | 3 --- weechat/src/irc/irc-server.c | 1 + weechat/src/irc/irc.h | 1 + 10 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src/gui/gui-action.c b/src/gui/gui-action.c index 69e4f3a7a..d12d42ab6 100644 --- a/src/gui/gui-action.c +++ b/src/gui/gui-action.c @@ -998,15 +998,17 @@ gui_action_jump_next_server (t_gui_window *window) if (ptr_server != SERVER(window->buffer)) { /* save current buffer */ - SERVER(window->buffer)->buffer->old_channel_buffer = - window->buffer; + SERVER(window->buffer)->saved_buffer = window->buffer; /* come back to memorized chan if found */ - if (ptr_server->buffer->old_channel_buffer) - ptr_buffer = ptr_server->buffer->old_channel_buffer; + if (ptr_server->saved_buffer) + ptr_buffer = ptr_server->saved_buffer; else ptr_buffer = (ptr_server->channels) ? ptr_server->channels->buffer : ptr_server->buffer; + if ((ptr_server->buffer == ptr_buffer) + && (ptr_buffer->all_servers)) + ptr_buffer->server = ptr_server; gui_switch_to_buffer (window, ptr_buffer); gui_redraw_buffer (window->buffer); } diff --git a/src/gui/gui-common.c b/src/gui/gui-common.c index a321a60cb..96066a30b 100644 --- a/src/gui/gui-common.c +++ b/src/gui/gui-common.c @@ -271,8 +271,6 @@ gui_buffer_new (t_gui_window *window, void *server, void *channel, int dcc, new_buffer->ptr_history = NULL; new_buffer->num_history = 0; - new_buffer->old_channel_buffer = NULL; - /* add buffer to buffers queue */ new_buffer->prev_buffer = last_gui_buffer; if (gui_buffers) @@ -475,6 +473,7 @@ gui_buffer_free (t_gui_buffer *buffer, int switch_to_another) t_gui_window *ptr_win; t_gui_buffer *ptr_buffer; t_gui_line *ptr_line; + t_irc_server *ptr_server; int create_new; create_new = (buffer->server || buffer->channel); @@ -486,10 +485,11 @@ gui_buffer_free (t_gui_buffer *buffer, int switch_to_another) if (buffer_before_dcc == buffer) buffer_before_dcc = NULL; - for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) + for (ptr_server = irc_servers; ptr_server; + ptr_server = ptr_server->next_server) { - if (ptr_buffer->old_channel_buffer == buffer) - ptr_buffer->old_channel_buffer = NULL; + if (ptr_server->saved_buffer == buffer) + ptr_server->saved_buffer = NULL; } if (switch_to_another) diff --git a/src/gui/gui.h b/src/gui/gui.h index f6669220c..fdc5f4493 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -212,9 +212,6 @@ struct t_gui_buffer t_history *ptr_history; /* current command in history */ int num_history; /* number of commands in history */ - /* channel buffer before jumping to next server */ - t_gui_buffer *old_channel_buffer; /* only used for server buffer */ - /* link to previous/next buffer */ t_gui_buffer *prev_buffer; /* link to previous buffer */ t_gui_buffer *next_buffer; /* link to next buffer */ diff --git a/src/irc/irc-server.c b/src/irc/irc-server.c index afcac970a..5cce3faa5 100644 --- a/src/irc/irc-server.c +++ b/src/irc/irc-server.c @@ -105,6 +105,7 @@ server_init (t_irc_server *server) server->lag_check_time.tv_usec = 0; server->lag_next_check = time (NULL) + cfg_irc_lag_check; server->buffer = NULL; + server->saved_buffer = NULL; server->channels = NULL; server->last_channel = NULL; } diff --git a/src/irc/irc.h b/src/irc/irc.h index e2335c4a5..236353b8f 100644 --- a/src/irc/irc.h +++ b/src/irc/irc.h @@ -181,6 +181,7 @@ struct t_irc_server struct timeval lag_check_time; /* last time lag was checked (ping sent)*/ time_t lag_next_check; /* time for next check */ t_gui_buffer *buffer; /* GUI buffer allocated for server */ + t_gui_buffer *saved_buffer; /* channel before jumping to next server*/ t_irc_channel *channels; /* opened channels on server */ t_irc_channel *last_channel; /* last opened channal on server */ t_irc_server *prev_server; /* link to previous server */ diff --git a/weechat/src/gui/gui-action.c b/weechat/src/gui/gui-action.c index 69e4f3a7a..d12d42ab6 100644 --- a/weechat/src/gui/gui-action.c +++ b/weechat/src/gui/gui-action.c @@ -998,15 +998,17 @@ gui_action_jump_next_server (t_gui_window *window) if (ptr_server != SERVER(window->buffer)) { /* save current buffer */ - SERVER(window->buffer)->buffer->old_channel_buffer = - window->buffer; + SERVER(window->buffer)->saved_buffer = window->buffer; /* come back to memorized chan if found */ - if (ptr_server->buffer->old_channel_buffer) - ptr_buffer = ptr_server->buffer->old_channel_buffer; + if (ptr_server->saved_buffer) + ptr_buffer = ptr_server->saved_buffer; else ptr_buffer = (ptr_server->channels) ? ptr_server->channels->buffer : ptr_server->buffer; + if ((ptr_server->buffer == ptr_buffer) + && (ptr_buffer->all_servers)) + ptr_buffer->server = ptr_server; gui_switch_to_buffer (window, ptr_buffer); gui_redraw_buffer (window->buffer); } diff --git a/weechat/src/gui/gui-common.c b/weechat/src/gui/gui-common.c index a321a60cb..96066a30b 100644 --- a/weechat/src/gui/gui-common.c +++ b/weechat/src/gui/gui-common.c @@ -271,8 +271,6 @@ gui_buffer_new (t_gui_window *window, void *server, void *channel, int dcc, new_buffer->ptr_history = NULL; new_buffer->num_history = 0; - new_buffer->old_channel_buffer = NULL; - /* add buffer to buffers queue */ new_buffer->prev_buffer = last_gui_buffer; if (gui_buffers) @@ -475,6 +473,7 @@ gui_buffer_free (t_gui_buffer *buffer, int switch_to_another) t_gui_window *ptr_win; t_gui_buffer *ptr_buffer; t_gui_line *ptr_line; + t_irc_server *ptr_server; int create_new; create_new = (buffer->server || buffer->channel); @@ -486,10 +485,11 @@ gui_buffer_free (t_gui_buffer *buffer, int switch_to_another) if (buffer_before_dcc == buffer) buffer_before_dcc = NULL; - for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) + for (ptr_server = irc_servers; ptr_server; + ptr_server = ptr_server->next_server) { - if (ptr_buffer->old_channel_buffer == buffer) - ptr_buffer->old_channel_buffer = NULL; + if (ptr_server->saved_buffer == buffer) + ptr_server->saved_buffer = NULL; } if (switch_to_another) diff --git a/weechat/src/gui/gui.h b/weechat/src/gui/gui.h index f6669220c..fdc5f4493 100644 --- a/weechat/src/gui/gui.h +++ b/weechat/src/gui/gui.h @@ -212,9 +212,6 @@ struct t_gui_buffer t_history *ptr_history; /* current command in history */ int num_history; /* number of commands in history */ - /* channel buffer before jumping to next server */ - t_gui_buffer *old_channel_buffer; /* only used for server buffer */ - /* link to previous/next buffer */ t_gui_buffer *prev_buffer; /* link to previous buffer */ t_gui_buffer *next_buffer; /* link to next buffer */ diff --git a/weechat/src/irc/irc-server.c b/weechat/src/irc/irc-server.c index afcac970a..5cce3faa5 100644 --- a/weechat/src/irc/irc-server.c +++ b/weechat/src/irc/irc-server.c @@ -105,6 +105,7 @@ server_init (t_irc_server *server) server->lag_check_time.tv_usec = 0; server->lag_next_check = time (NULL) + cfg_irc_lag_check; server->buffer = NULL; + server->saved_buffer = NULL; server->channels = NULL; server->last_channel = NULL; } diff --git a/weechat/src/irc/irc.h b/weechat/src/irc/irc.h index e2335c4a5..236353b8f 100644 --- a/weechat/src/irc/irc.h +++ b/weechat/src/irc/irc.h @@ -181,6 +181,7 @@ struct t_irc_server struct timeval lag_check_time; /* last time lag was checked (ping sent)*/ time_t lag_next_check; /* time for next check */ t_gui_buffer *buffer; /* GUI buffer allocated for server */ + t_gui_buffer *saved_buffer; /* channel before jumping to next server*/ t_irc_channel *channels; /* opened channels on server */ t_irc_channel *last_channel; /* last opened channal on server */ t_irc_server *prev_server; /* link to previous server */