changeset 29371:61ea136df111

Refresh the statusbox correctly. When clicking on 'New' or 'Saved' status from the dropdown, while we were typing a status message, the statusbox goes into an eternal 'typing' state, until you change it by clicking on it. This is a fix for that. Fixes #11289.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Fri, 05 Feb 2010 14:38:53 +0000
parents ef1c3791ad32
children 791606778223
files pidgin/gtkstatusbox.c
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/pidgin/gtkstatusbox.c	Thu Feb 04 23:03:24 2010 +0000
+++ b/pidgin/gtkstatusbox.c	Fri Feb 05 14:38:53 2010 +0000
@@ -2630,6 +2630,7 @@
 	gpointer data;
 	GList *accounts = NULL, *node;
 	int active;
+	gboolean wastyping = FALSE;
 
 
 	if (!gtk_tree_model_get_iter (GTK_TREE_MODEL(status_box->dropdown_store), &iter, path))
@@ -2642,7 +2643,7 @@
 			   TYPE_COLUMN, &type,
 			   DATA_COLUMN, &data,
 			   -1);
-	if (status_box->typing != 0)
+	if ((wastyping = (status_box->typing != 0)))
 		purple_timeout_remove(status_box->typing);
 	status_box->typing = 0;
 
@@ -2666,14 +2667,18 @@
 			pidgin_status_editor_show(FALSE,
 				purple_savedstatus_is_transient(saved_status)
 					? saved_status : NULL);
-			status_menu_refresh_iter(status_box, FALSE);
+			status_menu_refresh_iter(status_box, wastyping);
+			if (wastyping)
+				pidgin_status_box_refresh(status_box);
 			return;
 		}
 
 		if (type == PIDGIN_STATUS_BOX_TYPE_SAVED)
 		{
 			pidgin_status_window_show();
-			status_menu_refresh_iter(status_box, FALSE);
+			status_menu_refresh_iter(status_box, wastyping);
+			if (wastyping)
+				pidgin_status_box_refresh(status_box);
 			return;
 		}
 	}