diff options
author | VMiklos <vmiklos@frugalware.org> | 2007-10-07 03:06:22 +0200 |
---|---|---|
committer | VMiklos <vmiklos@frugalware.org> | 2007-10-07 03:06:22 +0200 |
commit | ec159f19dc1ff109c8876500af19d0952663e9a8 (patch) | |
tree | 476c661b77d571a09e2ca124e43089f013f739fa /skype/skype.c | |
parent | c09d32721e49feda7c459dbba9222252ae56eec7 (diff) |
fix unwanted rejoin after /part
Diffstat (limited to 'skype/skype.c')
-rw-r--r-- | skype/skype.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/skype/skype.c b/skype/skype.c index dcca7b6f..d24424d0 100644 --- a/skype/skype.c +++ b/skype/skype.c @@ -435,11 +435,21 @@ static gboolean skype_read_callback( gpointer data, gint fd, b_input_condition c struct groupchat *gc; gc = imcb_chat_new( ic, id ); } + else if(!strcmp(info, "STATUS UNSUBSCRIBED")) + { + struct groupchat *gc = skype_chat_by_name(ic, id); + if(gc) + gc->data = (void*)FALSE; + } else if(!strncmp(info, "ACTIVEMEMBERS ", 14)) { info += 14; struct groupchat *gc = skype_chat_by_name(ic, id); - if(gc) + /* Hack! We set ->data to TRUE + * while we're on the channel + * so that we won't rejoin + * after a /part. */ + if(gc && !gc->data) { char **members = g_strsplit(info, " ", 0); int i; @@ -453,6 +463,7 @@ static gboolean skype_read_callback( gpointer data, gint fd, b_input_condition c } imcb_chat_add_buddy(gc, sd->username); g_strfreev(members); + gc->data = (void*)TRUE; } } } |