Mercurial > pidgin.yaz
diff pidgin/gtkblist.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 | 0646207f360f |
children | 06fa97f637a7 39c1720db373 |
line wrap: on
line diff
--- a/pidgin/gtkblist.c Sat Apr 17 22:22:52 2010 +0000 +++ b/pidgin/gtkblist.c Sun Apr 18 22:39:01 2010 +0000 @@ -7461,7 +7461,7 @@ return gtkblist; } -static void account_signon_cb(PurpleConnection *gc, gpointer z) +static gboolean autojoin_cb(PurpleConnection *gc, gpointer data) { PurpleAccount *account = purple_connection_get_account(gc); PurpleBlistNode *gnode, *cnode; @@ -7487,6 +7487,9 @@ serv_join_chat(gc, chat->components); } } + + /* Stop processing; we handled the autojoins. */ + return TRUE; } void * @@ -7563,10 +7566,6 @@ cached_emblems = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); - purple_signal_connect(purple_connections_get_handle(), "signed-on", - gtk_blist_handle, PURPLE_CALLBACK(account_signon_cb), - NULL); - /* Initialize prefs */ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/blist"); purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons", TRUE); @@ -7625,6 +7624,9 @@ purple_signal_connect(purple_blist_get_handle(), "buddy-privacy-changed", gtk_blist_handle, PURPLE_CALLBACK(pidgin_blist_update_privacy_cb), NULL); + purple_signal_connect_priority(purple_connections_get_handle(), "autojoin", + gtk_blist_handle, PURPLE_CALLBACK(autojoin_cb), + NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST); } void @@ -7740,7 +7742,6 @@ return; } - if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) { gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0); return;