# HG changeset patch # User Luke Schierer # Date 1195044453 0 # Node ID c6834071f6c5737e546748335eb7cb764fc58390 # Parent fa407f34864fd77bf7774d6393f973ca5fe1fd79# Parent 040b4f646f3581165d4291696092bcb9be757181 merge of '1e67d8385e25c7400a4100b8af1048dd5c0a3f0f' and '77ab949e0925a5edfc71240de20bb2a117c01ca7' diff -r fa407f34864f -r c6834071f6c5 pidgin/gtkblist.c --- 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 */