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 | |
| parent | c09d32721e49feda7c459dbba9222252ae56eec7 (diff) | |
fix unwanted rejoin after /part
| -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;  						}  					}  				}  | 
