changeset 21500:c6834071f6c5

merge of '1e67d8385e25c7400a4100b8af1048dd5c0a3f0f' and '77ab949e0925a5edfc71240de20bb2a117c01ca7'
author Luke Schierer <lschiere@pidgin.im>
date Wed, 14 Nov 2007 12:47:33 +0000
parents fa407f34864f (current diff) 040b4f646f35 (diff)
children dab9757b6308
files
diffstat 1 files changed, 18 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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 */