diff options
author | Felix Kaser <f.kaser@gmx.net> | 2009-12-09 18:22:58 +0800 |
---|---|---|
committer | Felix Kaser <f.kaser@gmx.net> | 2009-12-10 07:44:16 +0800 |
commit | 2e7c1dd9ccb1b67b19393fdfd2fe32a2b4727f42 (patch) | |
tree | cd4b284b8662450fa2817c784c93f64ac868a210 | |
parent | d2a7455e20bfbf9787e69c60af8877205c5cd982 (diff) | |
download | gsoc2013-empathy-2e7c1dd9ccb1b67b19393fdfd2fe32a2b4727f42.tar gsoc2013-empathy-2e7c1dd9ccb1b67b19393fdfd2fe32a2b4727f42.tar.gz gsoc2013-empathy-2e7c1dd9ccb1b67b19393fdfd2fe32a2b4727f42.tar.bz2 gsoc2013-empathy-2e7c1dd9ccb1b67b19393fdfd2fe32a2b4727f42.tar.lz gsoc2013-empathy-2e7c1dd9ccb1b67b19393fdfd2fe32a2b4727f42.tar.xz gsoc2013-empathy-2e7c1dd9ccb1b67b19393fdfd2fe32a2b4727f42.tar.zst gsoc2013-empathy-2e7c1dd9ccb1b67b19393fdfd2fe32a2b4727f42.zip |
changed way of tracking pending changes
fixes bug #603490, we track pending changes explicitly now. before they were connected to the sensitivity of the control buttons (if buttons sensitive -> pending changes). When an account is about to be created and the user hits "Cancel" we don't show the "are you sure" dialog any more because the action of the user is clear and not accidental. When closing the window during creation the dialog still shows up.
-rw-r--r-- | libempathy-gtk/empathy-account-widget.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c index c28ee75a6..05243699b 100644 --- a/libempathy-gtk/empathy-account-widget.c +++ b/libempathy-gtk/empathy-account-widget.c @@ -71,9 +71,6 @@ typedef struct { /* An EmpathyAccountWidget can be used to either create an account or * modify it. When we are creating an account, this member is set to TRUE */ gboolean creating_account; - /* If we are creating a new account, this member is set to TRUE once the - * account has been created */ - gboolean account_created; /* if TRUE, the GTK+ destroy signal has been fired and so the widgets * embedded in this account widget can't be used any more @@ -116,8 +113,6 @@ account_widget_set_control_buttons_sensitivity (EmpathyAccountWidget *self, gtk_widget_set_sensitive (priv->apply_button, sensitive); gtk_widget_set_sensitive ( priv->cancel_button, sensitive || priv->creating_account); - - priv->contains_pending_changes = sensitive; } } @@ -172,8 +167,12 @@ static void account_widget_entry_changed_cb (GtkEditable *entry, EmpathyAccountWidget *self) { + EmpathyAccountWidgetPriv *priv = GET_PRIV (self); + account_widget_entry_changed_common (self, GTK_ENTRY (entry), FALSE); account_widget_handle_control_buttons_sensitivity (self); + + priv->contains_pending_changes = TRUE; } static void @@ -215,6 +214,7 @@ account_widget_int_changed_cb (GtkWidget *widget, } account_widget_handle_control_buttons_sensitivity (self); + priv->contains_pending_changes = TRUE; } static void @@ -247,6 +247,7 @@ account_widget_checkbutton_toggled_cb (GtkWidget *widget, } account_widget_handle_control_buttons_sensitivity (self); + priv->contains_pending_changes = TRUE; } static void @@ -264,6 +265,7 @@ account_widget_forget_clicked_cb (GtkWidget *button, gtk_entry_set_text (GTK_ENTRY (priv->entry_password), ""); account_widget_handle_control_buttons_sensitivity (self); + priv->contains_pending_changes = TRUE; } static void @@ -275,6 +277,8 @@ account_widget_password_changed_cb (GtkWidget *entry, str = gtk_entry_get_text (GTK_ENTRY (entry)); gtk_widget_set_sensitive (priv->button_forget, !EMP_STR_EMPTY (str)); + + priv->contains_pending_changes = TRUE; } static void @@ -300,6 +304,8 @@ account_widget_jabber_ssl_toggled_cb (GtkWidget *checkbutton_ssl, } gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->spinbutton_port), port); + + priv->contains_pending_changes = TRUE; } static void @@ -339,6 +345,7 @@ account_widget_combobox_changed_cb (GtkWidget *widget, } account_widget_handle_control_buttons_sensitivity (self); + priv->contains_pending_changes = TRUE; } void @@ -730,7 +737,6 @@ account_widget_applied_cb (GObject *source_object, tp_account_set_enabled_async (account, TRUE, account_widget_account_enabled_cb, widget); - priv->account_created = TRUE; g_signal_emit (widget, signals[ACCOUNT_CREATED], 0); } else if (priv->enabled_checkbox != NULL) @@ -759,6 +765,8 @@ account_widget_applied_cb (GObject *source_object, if (!priv->destroyed) account_widget_set_control_buttons_sensitivity (widget, FALSE); + priv->contains_pending_changes = FALSE; + /* unref the widget - part of the workaround */ g_object_unref (widget); } @@ -1698,11 +1706,6 @@ empathy_account_widget_contains_pending_changes (EmpathyAccountWidget *widget) { EmpathyAccountWidgetPriv *priv = GET_PRIV (widget); - if (priv->creating_account && !priv->account_created) - /* We always want to warn the user if he's in the process of creating a - * new account which hasn't been actually created yet. */ - return TRUE; - return priv->contains_pending_changes; } |