pidgin: aee5a932: Refresh the statusbox correctly.

sadrul at pidgin.im sadrul at pidgin.im
Fri Feb 5 09:42:43 EST 2010


-----------------------------------------------------------------
Revision: aee5a93203f807e81fd88cc655fb27908cd17ff3
Ancestor: 091e51ec52b6a8997b13d2bae08a177dcdc409d5
Author: sadrul at pidgin.im
Date: 2010-02-05T14:38:53
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/aee5a93203f807e81fd88cc655fb27908cd17ff3

Modified files:
        pidgin/gtkstatusbox.c

ChangeLog: 

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.

-------------- next part --------------
============================================================
--- pidgin/gtkstatusbox.c	4b8cd9dd5a021cd296b30db65004b3d3cf70e507
+++ pidgin/gtkstatusbox.c	a60f228bcad0c34d73b664dd940e8920c6a54f28
@@ -2630,6 +2630,7 @@ static void pidgin_status_box_changed(Pi
 	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 @@ static void pidgin_status_box_changed(Pi
 			   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 @@ static void pidgin_status_box_changed(Pi
 			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;
 		}
 	}


More information about the Commits mailing list