Mercurial > pidgin.yaz
diff finch/gntblist.c @ 30165:378cceb9131d
Add an autojoin connection signal
UIs should use this so plugins can delay autojoining by blocking this
signal and re-emitting it later. For example, IRC Helper now delays
autojoins until after it has identified with NickServ/AuthServ/etc.
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sun, 18 Apr 2010 22:39:01 +0000 |
parents | 259bbfb423d4 |
children | 53dd827e6bb2 |
line wrap: on
line diff
--- a/finch/gntblist.c Sat Apr 17 22:22:52 2010 +0000 +++ b/finch/gntblist.c Sun Apr 18 22:39:01 2010 +0000 @@ -144,7 +144,7 @@ static void blist_show(PurpleBuddyList *list); static void update_node_display(PurpleBlistNode *buddy, FinchBlist *ggblist); static void update_buddy_display(PurpleBuddy *buddy, FinchBlist *ggblist); -static void account_signed_on_cb(PurpleConnection *pc, gpointer null); +static gboolean account_autojoin_cb(PurpleConnection *pc, gpointer null); static void finch_request_add_buddy(PurpleAccount *account, const char *username, const char *grp, const char *alias); static void menu_group_set_cb(GntMenuItem *item, gpointer null); @@ -2213,8 +2213,10 @@ purple_prefs_connect_callback(finch_blist_get_handle(), PREF_ROOT "/grouping", redraw_blist, NULL); - purple_signal_connect(purple_connections_get_handle(), "signed-on", purple_blist_get_handle(), - G_CALLBACK(account_signed_on_cb), NULL); + purple_signal_connect_priority(purple_connections_get_handle(), + "autojoin", purple_blist_get_handle(), + G_CALLBACK(account_autojoin_cb), NULL, + PURPLE_SIGNAL_PRIORITY_HIGHEST); finch_blist_install_manager(&default_manager); @@ -2684,10 +2686,11 @@ return FALSE; } -static void -account_signed_on_cb(PurpleConnection *gc, gpointer null) +static gboolean +account_autojoin_cb(PurpleConnection *gc, gpointer null) { g_idle_add(auto_join_chats, gc); + return TRUE; } static void toggle_pref_cb(GntMenuItem *item, gpointer n)