diff options
author | TingPing <tngpng@gmail.com> | 2013-02-24 22:27:55 -0800 |
---|---|---|
committer | TingPing <tngpng@gmail.com> | 2013-02-24 22:27:55 -0800 |
commit | 3b7f86aef881c3a22e42676b7a22b963a996ab4f (patch) | |
tree | 592604fb1c1292e8ddbfda11ca3378ca372d75dc /src/common/outbound.c | |
parent | f16646f4461787ac7b84d29871d974877c5760ac (diff) | |
parent | 6db9a8636628cfbccf0b40dfaca6b84ac17fdb41 (diff) |
Merge pull request #426 from Misdre/master
Typing /join #channel → focus the channel if it's already open. closes #406
Diffstat (limited to 'src/common/outbound.c')
-rw-r--r-- | src/common/outbound.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/common/outbound.c b/src/common/outbound.c index cc2d0e3e..c146c2ac 100644 --- a/src/common/outbound.c +++ b/src/common/outbound.c @@ -2348,17 +2348,26 @@ static int cmd_join (struct session *sess, char *tbuf, char *word[], char *word_eol[]) { char *chan = word[2]; + session *sess_find; if (*chan) { char *po, *pass = word[3]; - sess->server->p_join (sess->server, chan, pass); - if (sess->channel[0] == 0 && sess->waitchannel[0]) + + sess_find = find_channel (sess->server, chan); + if (!sess_find) { - po = strchr (chan, ','); - if (po) - *po = 0; - safe_strcpy (sess->waitchannel, chan, CHANLEN); + sess->server->p_join (sess->server, chan, pass); + if (sess->channel[0] == 0 && sess->waitchannel[0]) + { + po = strchr (chan, ','); + if (po) + *po = 0; + safe_strcpy (sess->waitchannel, chan, CHANLEN); + } } + else + fe_ctrl_gui (sess_find, 2, 0); /* bring-to-front */ + return TRUE; } return FALSE; |