aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-account-widget.c
diff options
context:
space:
mode:
authorFelix Kaser <f.kaser@gmx.net>2009-12-09 18:22:58 +0800
committerFelix Kaser <f.kaser@gmx.net>2009-12-10 07:44:16 +0800
commit2e7c1dd9ccb1b67b19393fdfd2fe32a2b4727f42 (patch)
treecd4b284b8662450fa2817c784c93f64ac868a210 /libempathy-gtk/empathy-account-widget.c
parentd2a7455e20bfbf9787e69c60af8877205c5cd982 (diff)
downloadgsoc2013-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.
Diffstat (limited to 'libempathy-gtk/empathy-account-widget.c')
-rw-r--r--libempathy-gtk/empathy-account-widget.c25
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;
}