[gnome-initial-setup] page: Allow the page to make the decision about whether or not to use apply
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup] page: Allow the page to make the decision about whether or not to use apply
- Date: Sun, 16 Jun 2013 03:29:09 +0000 (UTC)
commit e59468f93d231967e02da826dd31d3f7c3b9cf53
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Sat Jun 15 01:37:19 2013 -0400
page: Allow the page to make the decision about whether or not to use apply
gnome-initial-setup/gis-page.c | 24 +++++++++-----
gnome-initial-setup/gis-page.h | 2 +-
.../pages/account/gis-account-page.c | 33 ++++++++------------
3 files changed, 29 insertions(+), 30 deletions(-)
---
diff --git a/gnome-initial-setup/gis-page.c b/gnome-initial-setup/gis-page.c
index 2596f0a..abe5ea1 100644
--- a/gnome-initial-setup/gis-page.c
+++ b/gnome-initial-setup/gis-page.c
@@ -180,6 +180,13 @@ gis_page_constructed (GObject *object)
G_OBJECT_CLASS (gis_page_parent_class)->constructed (object);
}
+static gboolean
+gis_page_real_apply (GisPage *page,
+ GCancellable *cancellable)
+{
+ return FALSE;
+}
+
static void
gis_page_class_init (GisPageClass *klass)
{
@@ -192,6 +199,7 @@ gis_page_class_init (GisPageClass *klass)
object_class->set_property = gis_page_set_property;
klass->get_builder = gis_page_real_get_builder;
+ klass->apply = gis_page_real_apply;
obj_props[PROP_DRIVER] =
g_param_spec_object ("driver", "", "", GIS_TYPE_DRIVER,
@@ -274,13 +282,6 @@ gis_page_apply_begin (GisPage *page,
klass = GIS_PAGE_GET_CLASS (page);
- /* Shortcut case where no apply vfunc, to avoid flicker */
- if (!klass->apply) {
- if (callback)
- (callback) (page, TRUE, user_data);
- return;
- }
-
/* Unrefs in gis_page_apply_complete() */
g_object_ref (page);
@@ -288,9 +289,14 @@ gis_page_apply_begin (GisPage *page,
page->priv->apply_data = user_data;
page->priv->apply_cancel = g_cancellable_new ();
page->priv->applying = TRUE;
- g_object_notify_by_pspec (G_OBJECT (page), obj_props[PROP_APPLYING]);
- (klass->apply) (page, page->priv->apply_cancel);
+ if (!klass->apply (page, page->priv->apply_cancel))
+ {
+ /* Shortcut case where we don't want apply, to avoid flicker */
+ gis_page_apply_complete (page, TRUE);
+ }
+
+ g_object_notify_by_pspec (G_OBJECT (page), obj_props[PROP_APPLYING]);
}
void
diff --git a/gnome-initial-setup/gis-page.h b/gnome-initial-setup/gis-page.h
index 25775e7..4c9ab9d 100644
--- a/gnome-initial-setup/gis-page.h
+++ b/gnome-initial-setup/gis-page.h
@@ -63,7 +63,7 @@ struct _GisPageClass
GtkBuilder * (*get_builder) (GisPage *page);
GtkWidget * (*get_action_widget) (GisPage *page);
void (*locale_changed) (GisPage *page);
- void (*apply) (GisPage *page,
+ gboolean (*apply) (GisPage *page,
GCancellable *cancellable);
void (*save_data) (GisPage *page);
void (*shown) (GisPage *page);
diff --git a/gnome-initial-setup/pages/account/gis-account-page.c
b/gnome-initial-setup/pages/account/gis-account-page.c
index 28fb309..411f820 100644
--- a/gnome-initial-setup/pages/account/gis-account-page.c
+++ b/gnome-initial-setup/pages/account/gis-account-page.c
@@ -931,22 +931,6 @@ enterprise_add_user (GisAccountPage *page)
}
}
-static void
-save_account_data (GisAccountPage *page)
-{
- GisAccountPagePrivate *priv = page->priv;
- switch (priv->mode) {
- case UM_LOCAL:
- gis_page_apply_complete (GIS_PAGE (page), TRUE);
- break;
- case UM_ENTERPRISE:
- enterprise_add_user (page);
- break;
- default:
- g_assert_not_reached ();
- }
-}
-
static gchar *
realm_get_name (UmRealmObject *realm)
{
@@ -1119,14 +1103,23 @@ toggle_mode (GtkToggleButton *button,
gtk_toggle_button_get_active (button) ? UM_ENTERPRISE : UM_LOCAL);
}
-static void
+static gboolean
gis_account_page_apply (GisPage *gis_page,
GCancellable *cancellable)
{
GisAccountPage *page = GIS_ACCOUNT_PAGE (gis_page);
- g_clear_object (&page->priv->cancellable);
- page->priv->cancellable = g_object_ref (cancellable);
- save_account_data (page);
+ GisAccountPagePrivate *priv = page->priv;
+
+ switch (priv->mode) {
+ case UM_LOCAL:
+ return FALSE;
+ case UM_ENTERPRISE:
+ page->priv->cancellable = g_object_ref (cancellable);
+ enterprise_add_user (page);
+ return TRUE;
+ default:
+ g_assert_not_reached ();
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]