Wed, 14 Nov 2007 12:47:33 +0000
merge of '83a6049c6d40198b19caf7b1737efd1a7f5ae132'
and '1f6bd334d6a094e52d9603addb8037efcd336132'
--- a/pidgin/gtkblist.c Wed Nov 14 12:44:45 2007 +0000 +++ b/pidgin/gtkblist.c Wed Nov 14 12:47:33 2007 +0000 @@ -110,13 +110,13 @@ typedef struct { - /** PidginScrollBook used to hold error minidialogs. Gets packed - * inside PidginBuddyList.error_buttons + /** Used to hold error minidialogs. Gets packed + * inside PidginBuddyList.error_buttons */ - GtkWidget *error_scrollbook; + PidginScrollBook *error_scrollbook; /** Pointer to the mini-dialog about having signed on elsewhere, if one - * is showing; @c NULL otherwise. + * is showing; @c NULL otherwise. */ PidginMiniDialog *signed_on_elsewhere; } PidginBuddyListPrivate; @@ -4538,8 +4538,8 @@ remove_generic_error_dialog(PurpleAccount *account) { PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist); - remove_child_widget_by_account(GTK_CONTAINER(priv->error_scrollbook), - account); + remove_child_widget_by_account( + GTK_CONTAINER(priv->error_scrollbook->notebook), account); } @@ -4721,6 +4721,16 @@ else pidgin_blist_update_account_error_state(account, NULL); + /* Don't bother updating the error if it hasn't changed. This stops + * URGENT being repeatedly set for network errors whenever they try to + * reconnect. + */ + if ((old == new) || + (old != NULL && new != NULL && old->type == new->type + && g_str_equal(old->description, new->description)) + ) + return; + if (old) { if(old->type == PURPLE_CONNECTION_ERROR_NAME_IN_USE) remove_from_signed_on_elsewhere(account); @@ -5230,9 +5240,9 @@ gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->error_buttons, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(gtkblist->error_buttons), 0); - priv->error_scrollbook = pidgin_scroll_book_new(); + priv->error_scrollbook = PIDGIN_SCROLL_BOOK(pidgin_scroll_book_new()); gtk_box_pack_start(GTK_BOX(gtkblist->error_buttons), - priv->error_scrollbook, FALSE, FALSE, 0); + GTK_WIDGET(priv->error_scrollbook), FALSE, FALSE, 0); /* Add the statusbox */