# msnplus_patch.patch by daniele_athome, jgoguen # Taken from http://developer.pidgin.im/ticket/4598 # Allows to activate Plus! plugin, to show colored nicks with MSN Plus! Tags # --- ./pidgin/gtkblist.c 2009-06-16 10:54:35.000000000 +0200 +++ ./pidgin/gtkblist.c 2009-06-18 16:37:38.000000000 +0200 @@ -4011,6 +4011,7 @@ PurplePresence *presence; struct _pidgin_blist_node *gtkcontactnode = NULL; char *idletime = NULL, *statustext = NULL, *nametext = NULL; + char *ret = NULL; PurpleConversation *conv = find_conversation_with_buddy(b); gboolean hidden_conv = FALSE; gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); @@ -4039,8 +4040,22 @@ 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 already + * escaped version of name. + */ + ret = purple_signal_emit_return_1(pidgin_blist_get_handle(), "drawing-buddy", b); + if(ret != NULL) + { + purple_debug_warning("gtkblist", "drawing-buddy signal returned \"%s\"\n", ret); + nametext = g_strdup(ret); + } + else + { + purple_debug_info("gtkblist", "using default escaped name\n"); + nametext = g_markup_escape_text(name, strlen(name)); + } + g_free(ret); + presence = purple_buddy_get_presence(b); /* Name is all that is needed */ @@ -7398,6 +7412,10 @@ 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); + /* Signal for pre-markup buddy draw. */ + purple_signal_register(gtk_blist_handle, "drawing-buddy", + purple_marshal_POINTER__POINTER_INT, purple_value_new(PURPLE_TYPE_STRING), 1, + purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_BLIST_BUDDY)); } void