# HG changeset patch # User Mark Doliner # Date 1313993838 0 # Node ID c0e01ee203b1b6b87dcf4a275487af9832361266 # Parent 0179f6642e9c09f6b6ade5ba7a594acdb177cdda I tried to disapprove this, but it didn't seem to work. Maybe I messed something up with a manual merge? Anyway, I'm undoing this because I didn't realize that jabber adds stuff to the user_info list crazily out of order. My assumption that _prepend was being used for performance reasons was wrong--the actual reason is that we want the resource info at the top diff -r 0179f6642e9c -r c0e01ee203b1 libpurple/protocols/jabber/buddy.c --- a/libpurple/protocols/jabber/buddy.c Mon Aug 22 06:07:15 2011 +0000 +++ b/libpurple/protocols/jabber/buddy.c Mon Aug 22 06:17:18 2011 +0000 @@ -726,39 +726,16 @@ jbir = g_hash_table_lookup(jbi->resources, resource); user_info = jbi->user_info; - if (jbr) { - char *purdy = NULL; - char *tmp; - char priority[12]; - const char *status_name = jabber_buddy_state_get_name(jbr->state); - - g_snprintf(priority, sizeof(priority), "%d", jbr->priority); - purple_notify_user_info_add_pair_html(user_info, _("Priority"), priority); - - if (jbr->status) { - tmp = purple_markup_escape_text(jbr->status, -1); - purdy = purple_strdup_withhtml(tmp); - g_free(tmp); + if (jbr && jbr->client.name) { + char *tmp = + g_strdup_printf("%s%s%s", jbr->client.name, + (jbr->client.version ? " " : ""), + (jbr->client.version ? jbr->client.version : "")); + purple_notify_user_info_prepend_pair(user_info, _("Client"), tmp); + g_free(tmp); - if (purple_strequal(status_name, purdy)) - status_name = NULL; - } - - tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""), - ((status_name && purdy) ? ": " : ""), - (purdy ? purdy : "")); - purple_notify_user_info_add_pair_html(user_info, _("Status"), tmp); - - g_free(tmp); - g_free(purdy); - } else { - purple_notify_user_info_add_pair_html(user_info, _("Status"), _("Unknown")); - } - - if (jbir && jbir->idle_seconds > 0) { - char *idle = purple_str_seconds_to_string(jbir->idle_seconds); - purple_notify_user_info_add_pair_html(user_info, _("Idle"), idle); - g_free(idle); + if (jbr->client.os) + purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os); } if (jbr && jbr->tz_off != PURPLE_NO_TZ_OFF) { @@ -774,21 +751,43 @@ jbr->tz_off < 0 ? '-' : '+', abs(jbr->tz_off / (60*60)), abs((jbr->tz_off % (60*60)) / 60)); - purple_notify_user_info_add_pair_html(user_info, _("Local Time"), timestamp); + purple_notify_user_info_prepend_pair(user_info, _("Local Time"), timestamp); g_free(timestamp); } - if (jbr && jbr->client.name) { - char *tmp; + if (jbir && jbir->idle_seconds > 0) { + char *idle = purple_str_seconds_to_string(jbir->idle_seconds); + purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle); + g_free(idle); + } - if (jbr->client.os) - purple_notify_user_info_add_pair_html(user_info, _("Operating System"), jbr->client.os); + if (jbr) { + char *purdy = NULL; + char *tmp; + char priority[12]; + const char *status_name = jabber_buddy_state_get_name(jbr->state); + + if (jbr->status) { + tmp = purple_markup_escape_text(jbr->status, -1); + purdy = purple_strdup_withhtml(tmp); + g_free(tmp); - tmp = g_strdup_printf("%s%s%s", jbr->client.name, - (jbr->client.version ? " " : ""), - (jbr->client.version ? jbr->client.version : "")); - purple_notify_user_info_add_pair_html(user_info, _("Client"), tmp); + if (purple_strequal(status_name, purdy)) + status_name = NULL; + } + + tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""), + ((status_name && purdy) ? ": " : ""), + (purdy ? purdy : "")); + purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp); + + g_snprintf(priority, sizeof(priority), "%d", jbr->priority); + purple_notify_user_info_prepend_pair(user_info, _("Priority"), priority); + g_free(tmp); + g_free(purdy); + } else { + purple_notify_user_info_prepend_pair(user_info, _("Status"), _("Unknown")); } }