From dc526407b94e5fb6c3ad87de5d76520780396adb Mon Sep 17 00:00:00 2001 From: Davyd Madeley Date: Fri, 10 Apr 2009 16:54:25 +0000 Subject: [PATCH] Fix reset status on Esc From: Davyd Madeley svn path=/trunk/; revision=2789 --- libempathy-gtk/empathy-presence-chooser.c | 24 ++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/libempathy-gtk/empathy-presence-chooser.c b/libempathy-gtk/empathy-presence-chooser.c index e8dbdfc6..d791cab4 100644 --- a/libempathy-gtk/empathy-presence-chooser.c +++ b/libempathy-gtk/empathy-presence-chooser.c @@ -317,6 +317,13 @@ ui_set_custom_state (EmpathyPresenceChooser *self, priv->block_set_editing--; } +static void +reset_status (EmpathyPresenceChooser *self) +{ + /* recover the status that was unset */ + presence_chooser_presence_changed_cb (self); +} + static void entry_icon_release_cb (EmpathyPresenceChooser *self, GtkEntryIconPosition icon_pos, @@ -346,7 +353,7 @@ entry_key_press_event_cb (EmpathyPresenceChooser *self, { /* the user pressed Escape, undo the editing */ set_status_editing (self, FALSE); - presence_chooser_presence_changed_cb (self); + reset_status (self); return TRUE; } @@ -363,6 +370,7 @@ changed_cb (GtkComboBox *self, gpointer user_data) GtkTreeIter iter; char *icon_name; + McPresence new_state; gboolean customisable = TRUE; int type = -1; @@ -379,7 +387,7 @@ changed_cb (GtkComboBox *self, gpointer user_data) gtk_tree_model_get (model, &iter, COL_STATE_ICON_NAME, &icon_name, - COL_STATE, &priv->state, + COL_STATE, &new_state, COL_STATUS_CUSTOMISABLE, &customisable, COL_TYPE, &type, -1); @@ -394,18 +402,12 @@ changed_cb (GtkComboBox *self, gpointer user_data) if (type != ENTRY_TYPE_EDIT_CUSTOM) { gtk_editable_set_editable (GTK_EDITABLE (entry), customisable); + priv->state = new_state; } if (type == ENTRY_TYPE_EDIT_CUSTOM) { - /* recover the status that was unset because COL_STATUS_TEXT - * is "". Unfortunately if you try and set COL_STATUS_TEXT to - * NULL, it generates a g_critical. I wonder if there is a - * better way around this. */ - const char *status = empathy_idle_get_status (priv->idle); - priv->block_set_editing++; - gtk_entry_set_text (GTK_ENTRY (entry), status); - priv->block_set_editing--; + reset_status (EMPATHY_PRESENCE_CHOOSER (self)); /* attempt to get the toplevel for this widget */ GtkWidget *window = gtk_widget_get_toplevel (GTK_WIDGET (self)); @@ -473,7 +475,7 @@ focus_out_cb (EmpathyPresenceChooser *chooser, GdkEventFocus *event, if (priv->editing_status) { - entry_activate_cb (chooser, entry); + // entry_activate_cb (chooser, entry); } return FALSE; -- 2.39.2