Mercurial > pidgin
diff pidgin/gtkblist.c @ 29636:d75813811637
Add a new signal, drawing-buddy, to allow plugins to handle markup in buddy
names, or anything else a plugin author might choose to dream up. Fixes #4598.
author | John Bailey <rekkanoryo@rekkanoryo.org> |
---|---|
date | Thu, 25 Mar 2010 02:21:03 +0000 |
parents | 986a73d7ddd0 |
children | d98eee650379 |
line wrap: on
line diff
--- a/pidgin/gtkblist.c Wed Mar 24 02:38:56 2010 +0000 +++ b/pidgin/gtkblist.c Thu Mar 25 02:21:03 2010 +0000 @@ -4271,7 +4271,12 @@ else name = purple_buddy_get_alias(b); - nametext = g_markup_escape_text(name, strlen(name)); + /* Raise a contact pre-draw signal here. THe callback will return an + * escaped version of the name. */ + nametext = purple_signal_emit_return_1(pidgin_blist_get_handle(), "drawing-buddy", b); + + if(!nametext) + nametext = g_markup_escape_text(name, strlen(name)); presence = purple_buddy_get_presence(b); @@ -7595,10 +7600,19 @@ purple_value_new_outgoing(PURPLE_TYPE_BOXED, "GString *"), purple_value_new(PURPLE_TYPE_BOOLEAN)); - - purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL); - purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL); - purple_signal_connect(purple_blist_get_handle(), "buddy-privacy-changed", gtk_blist_handle, PURPLE_CALLBACK(pidgin_blist_update_privacy_cb), NULL); + purple_signal_register(gtk_blist_handle, "drawing-buddy", + purple_marshal_POINTER__POINTER, + purple_value_new(PURPLE_TYPE_STRING), 1, + purple_value_new(PURPLE_TYPE_SUBTYPE, + PURPLE_SUBTYPE_BLIST_BUDDY)); + + purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", + gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL); + purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", + gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL); + purple_signal_connect(purple_blist_get_handle(), "buddy-privacy-changed", + gtk_blist_handle, PURPLE_CALLBACK(pidgin_blist_update_privacy_cb), NULL); + } void