From cb95bfc8464ef37165ee9d900554a98a87ac68e6 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Sat, 16 Sep 2006 14:47:15 +0000 Subject: [PATCH] Fixed buffer search by server/channel: now if only channel is specified, a channel of another server can be found --- ChangeLog | 4 +++- src/gui/gui-buffer.c | 30 ++++++++++++++++++++++-------- weechat/ChangeLog | 4 +++- weechat/src/gui/gui-buffer.c | 30 ++++++++++++++++++++++-------- 4 files changed, 50 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 95cf89c5f..79d323a2d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,12 @@ WeeChat - Wee Enhanced Environment for Chat =========================================== -ChangeLog - 2006-09-12 +ChangeLog - 2006-09-16 Version 0.2.1 (under dev!): + * fixed buffer search by server/channel: now if only channel is specified, + a channel of another server can be found * fixed highlight for DCC, invite and notice: when a window is displaying buffer, there's no highlight * command "/away -all" now allowed when not connected to current server diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c index 034a221be..f0e40ad1f 100644 --- a/src/gui/gui-buffer.c +++ b/src/gui/gui-buffer.c @@ -238,8 +238,8 @@ gui_buffer_new (t_gui_window *window, void *server, void *channel, int type, t_gui_buffer * gui_buffer_search (char *server, char *channel) { - t_irc_server *ptr_server; - t_irc_channel *ptr_channel; + t_irc_server *ptr_server, *ptr_srv; + t_irc_channel *ptr_channel, *ptr_chan; t_gui_buffer *ptr_buffer; ptr_server = NULL; @@ -257,12 +257,6 @@ gui_buffer_search (char *server, char *channel) if (!ptr_server) return NULL; } - else - { - ptr_server = SERVER(gui_current_window->buffer); - if (!ptr_server) - ptr_server = SERVER(gui_buffers); - } if (channel && channel[0]) { @@ -272,6 +266,26 @@ gui_buffer_search (char *server, char *channel) if (ptr_channel) ptr_buffer = ptr_channel->buffer; } + else + { + for (ptr_srv = irc_servers; ptr_srv; + ptr_srv = ptr_srv->next_server) + { + for (ptr_chan = ptr_srv->channels; ptr_chan; + ptr_chan = ptr_chan->next_channel) + { + if (ascii_strcasecmp (ptr_chan->name, channel) == 0) + { + ptr_channel = ptr_chan; + break; + } + } + if (ptr_channel) + break; + } + if (ptr_channel) + ptr_buffer = ptr_channel->buffer; + } } else { diff --git a/weechat/ChangeLog b/weechat/ChangeLog index 95cf89c5f..79d323a2d 100644 --- a/weechat/ChangeLog +++ b/weechat/ChangeLog @@ -1,10 +1,12 @@ WeeChat - Wee Enhanced Environment for Chat =========================================== -ChangeLog - 2006-09-12 +ChangeLog - 2006-09-16 Version 0.2.1 (under dev!): + * fixed buffer search by server/channel: now if only channel is specified, + a channel of another server can be found * fixed highlight for DCC, invite and notice: when a window is displaying buffer, there's no highlight * command "/away -all" now allowed when not connected to current server diff --git a/weechat/src/gui/gui-buffer.c b/weechat/src/gui/gui-buffer.c index 034a221be..f0e40ad1f 100644 --- a/weechat/src/gui/gui-buffer.c +++ b/weechat/src/gui/gui-buffer.c @@ -238,8 +238,8 @@ gui_buffer_new (t_gui_window *window, void *server, void *channel, int type, t_gui_buffer * gui_buffer_search (char *server, char *channel) { - t_irc_server *ptr_server; - t_irc_channel *ptr_channel; + t_irc_server *ptr_server, *ptr_srv; + t_irc_channel *ptr_channel, *ptr_chan; t_gui_buffer *ptr_buffer; ptr_server = NULL; @@ -257,12 +257,6 @@ gui_buffer_search (char *server, char *channel) if (!ptr_server) return NULL; } - else - { - ptr_server = SERVER(gui_current_window->buffer); - if (!ptr_server) - ptr_server = SERVER(gui_buffers); - } if (channel && channel[0]) { @@ -272,6 +266,26 @@ gui_buffer_search (char *server, char *channel) if (ptr_channel) ptr_buffer = ptr_channel->buffer; } + else + { + for (ptr_srv = irc_servers; ptr_srv; + ptr_srv = ptr_srv->next_server) + { + for (ptr_chan = ptr_srv->channels; ptr_chan; + ptr_chan = ptr_chan->next_channel) + { + if (ascii_strcasecmp (ptr_chan->name, channel) == 0) + { + ptr_channel = ptr_chan; + break; + } + } + if (ptr_channel) + break; + } + if (ptr_channel) + ptr_buffer = ptr_channel->buffer; + } } else {