mirror of
https://github.com/irssi/irssi.git
synced 2024-11-03 04:27:19 -05:00
!channel fixes.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2803 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
ede752530e
commit
3ecf864f18
@ -129,6 +129,26 @@ CHANNEL_REC *channel_find(SERVER_REC *server, const char *name)
|
||||
(void *) name);
|
||||
}
|
||||
|
||||
void channel_change_name(CHANNEL_REC *channel, const char *name)
|
||||
{
|
||||
g_return_if_fail(IS_CHANNEL(channel));
|
||||
|
||||
g_free(channel->name);
|
||||
channel->name = g_strdup(name);
|
||||
|
||||
signal_emit("channel name changed", 1, channel);
|
||||
}
|
||||
|
||||
void channel_change_visible_name(CHANNEL_REC *channel, const char *name)
|
||||
{
|
||||
g_return_if_fail(IS_CHANNEL(channel));
|
||||
|
||||
g_free(channel->visible_name);
|
||||
channel->visible_name = g_strdup(name);
|
||||
|
||||
signal_emit("window item name changed", 1, channel);
|
||||
}
|
||||
|
||||
static CHANNEL_REC *channel_find_servers(GSList *servers, const char *name)
|
||||
{
|
||||
return gslist_foreach_find(servers,
|
||||
|
@ -26,6 +26,9 @@ void channel_destroy(CHANNEL_REC *channel);
|
||||
/* find channel by name, if `server' is NULL, search from all servers */
|
||||
CHANNEL_REC *channel_find(SERVER_REC *server, const char *name);
|
||||
|
||||
void channel_change_name(CHANNEL_REC *channel, const char *name);
|
||||
void channel_change_visible_name(CHANNEL_REC *channel, const char *name);
|
||||
|
||||
/* Send the auto send command to channel */
|
||||
void channel_send_autocommands(CHANNEL_REC *channel);
|
||||
|
||||
|
@ -643,7 +643,9 @@ void expandos_init(void)
|
||||
"window server changed", EXPANDO_ARG_WINDOW, NULL);
|
||||
expando_create("itemname", expando_itemname,
|
||||
"window changed", EXPANDO_ARG_NONE,
|
||||
"window item changed", EXPANDO_ARG_WINDOW, NULL);
|
||||
"window item changed", EXPANDO_ARG_WINDOW,
|
||||
"window item name changed", EXPANDO_ARG_WINDOW_ITEM,
|
||||
NULL);
|
||||
|
||||
read_settings();
|
||||
|
||||
|
@ -19,7 +19,6 @@ typedef struct {
|
||||
#define iconfig_get_str(a, b, c) config_get_str(mainconfig, a, b, c)
|
||||
#define iconfig_get_int(a, b, c) config_get_int(mainconfig, a, b, c)
|
||||
#define iconfig_get_bool(a, b, c) config_get_bool(mainconfig, a, b, c)
|
||||
#define iconfig_list_find(a, b, c, d) config_list_find(mainconfig, a, b, c, d)
|
||||
|
||||
#define iconfig_set_str(a, b, c) config_set_str(mainconfig, a, b, c)
|
||||
#define iconfig_set_int(a, b, c) config_set_int(mainconfig, a, b, c)
|
||||
|
@ -236,8 +236,18 @@ static void event_join(IRC_SERVER_REC *server, const char *data, const char *nic
|
||||
shortchan = g_strdup_printf("!%s", channel+6);
|
||||
chanrec = channel_find_unjoined(server, shortchan);
|
||||
if (chanrec != NULL) {
|
||||
channel_change_name(CHANNEL(chanrec), channel);
|
||||
g_free(chanrec->name);
|
||||
chanrec->name = g_strdup(channel);
|
||||
} else {
|
||||
/* well, did we join it with full name? if so, and if
|
||||
this was the first short one, change it's name. */
|
||||
chanrec = channel_find_unjoined(server, channel);
|
||||
if (chanrec != NULL &&
|
||||
irc_channel_find(server, shortchan) == NULL) {
|
||||
channel_change_visible_name(CHANNEL(chanrec),
|
||||
shortchan);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -149,12 +149,11 @@ static CHANNEL_REC *irc_channel_find_server(SERVER_REC *server,
|
||||
if (rec->chat_type != server->chat_type)
|
||||
continue;
|
||||
|
||||
/* check both !ABCDEchannel and !channel */
|
||||
if (g_strcasecmp(channel, rec->name) == 0)
|
||||
return rec;
|
||||
|
||||
/* check after removing ABCDE from !ABCDEchannel */
|
||||
if (*channel == '!' && *rec->name == '!' &&
|
||||
g_strcasecmp(channel+1, rec->name+6) == 0)
|
||||
if (g_strcasecmp(channel, rec->visible_name) == 0)
|
||||
return rec;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user