mirror of
https://github.com/weechat/weechat.git
synced 2026-06-30 23:06:38 +02:00
Fixed "jump to next server" action (was broken by new option "look_one_server_buffer")
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user