diff options
-rw-r--r-- | pidgin/gtkstatusbox.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/pidgin/gtkstatusbox.c b/pidgin/gtkstatusbox.c index eb171c36ca..e35fd664dc 100644 --- a/pidgin/gtkstatusbox.c +++ b/pidgin/gtkstatusbox.c @@ -2630,6 +2630,7 @@ static void pidgin_status_box_changed(PidginStatusBox *status_box) 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(PidginStatusBox *status_box) 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(PidginStatusBox *status_box) 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; } } |