From 5b4b6de8f4bc1484184ee469e1c976e1e7d96034 Mon Sep 17 00:00:00 2001 From: Davyd Madeley Date: Thu, 23 Apr 2009 19:47:52 +0800 Subject: Preserve the status message across combo box changes --- libempathy-gtk/empathy-status-preset-dialog.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'libempathy-gtk/empathy-status-preset-dialog.c') diff --git a/libempathy-gtk/empathy-status-preset-dialog.c b/libempathy-gtk/empathy-status-preset-dialog.c index 0fe577d97..f7171e4ef 100644 --- a/libempathy-gtk/empathy-status-preset-dialog.c +++ b/libempathy-gtk/empathy-status-preset-dialog.c @@ -63,6 +63,7 @@ struct _EmpathyStatusPresetDialogPriv GtkTreeIter selected_iter; gboolean add_combo_changed; + char *saved_status; }; enum @@ -82,12 +83,23 @@ enum ADD_COMBO_N_COLS }; +static void +empathy_status_preset_dialog_finalize (GObject *self) +{ + EmpathyStatusPresetDialogPriv *priv = GET_PRIV (self); + + g_free (priv->saved_status); + + G_OBJECT_CLASS (empathy_status_preset_dialog_parent_class)->finalize (self); +} + static void empathy_status_preset_dialog_class_init (EmpathyStatusPresetDialogClass *class) { GObjectClass *gobject_class; gobject_class = G_OBJECT_CLASS (class); + gobject_class->finalize = empathy_status_preset_dialog_finalize; g_type_class_add_private (gobject_class, sizeof (EmpathyStatusPresetDialogPriv)); @@ -371,12 +383,17 @@ status_preset_dialog_add_combo_changed (GtkComboBox *combo, g_free (icon_name); status_preset_dialog_set_add_combo_changed (self, FALSE, TRUE); + if (priv->saved_status && strlen (priv->saved_status) > 0) { + gtk_entry_set_text (GTK_ENTRY (entry), + priv->saved_status); + } } else { - const char *status; + g_free (priv->saved_status); + priv->saved_status = g_strdup ( + gtk_entry_get_text (GTK_ENTRY (entry))); - status = gtk_entry_get_text (GTK_ENTRY (entry)); status_preset_dialog_set_add_combo_changed (self, - strlen (status) > 0, FALSE); + strlen (priv->saved_status) > 0, FALSE); } } -- cgit v1.2.3