[gnome-initial-setup/shell/4765: 27/362] Hide Enterprise Login button
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup/shell/4765: 27/362] Hide Enterprise Login button
- Date: Thu, 19 Mar 2015 01:23:19 +0000 (UTC)
commit 9aa6f437203916339d41a4c2debe3e02aff7889e
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date: Wed Apr 30 12:12:59 2014 +0200
Hide Enterprise Login button
Instead, use the secret combination Ctrl+Alt+e to switch to Enterprise
Login.
[endlessm/eos-shell#2397]
gnome-initial-setup/gis-assistant.c | 19 ++++++++++
gnome-initial-setup/gis-page.c | 8 ++++
gnome-initial-setup/gis-page.h | 2 +
.../pages/account/gis-account-page.c | 36 ++++++++++++++-----
.../pages/account/gis-account-page.ui | 2 +-
5 files changed, 56 insertions(+), 11 deletions(-)
---
diff --git a/gnome-initial-setup/gis-assistant.c b/gnome-initial-setup/gis-assistant.c
index a97b91e..b956a77 100644
--- a/gnome-initial-setup/gis-assistant.c
+++ b/gnome-initial-setup/gis-assistant.c
@@ -162,6 +162,24 @@ gis_assistant_previous_page (GisAssistant *assistant)
}
static void
+update_accel_group (GisAssistant *assistant)
+{
+ GisAssistantPrivate *priv = gis_assistant_get_instance_private (assistant);
+ GtkWindow *window;
+ static GtkAccelGroup *accel_group = NULL;
+
+ window = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (assistant)));
+
+ /* Remove previous accel group */
+ if (accel_group)
+ gtk_window_remove_accel_group (window, accel_group);
+
+ accel_group = gis_page_get_accel_group (priv->current_page);
+ if (accel_group)
+ gtk_window_add_accel_group (window, accel_group);
+}
+
+static void
remove_from_progress_indicator (GtkWidget *widget,
gpointer user_data)
{
@@ -372,6 +390,7 @@ update_current_page (GisAssistant *assistant,
update_applying_state (assistant);
update_navigation_buttons (assistant);
update_progress_indicator (assistant);
+ update_accel_group (assistant);
gis_page_shown (page);
}
diff --git a/gnome-initial-setup/gis-page.c b/gnome-initial-setup/gis-page.c
index 997ebbb..a578470 100644
--- a/gnome-initial-setup/gis-page.c
+++ b/gnome-initial-setup/gis-page.c
@@ -259,6 +259,14 @@ gis_page_set_complete (GisPage *page, gboolean complete)
g_object_notify_by_pspec (G_OBJECT (page), obj_props[PROP_COMPLETE]);
}
+GtkAccelGroup *
+gis_page_get_accel_group (GisPage *page)
+{
+ if (GIS_PAGE_GET_CLASS (page)->get_accel_group)
+ return GIS_PAGE_GET_CLASS (page)->get_accel_group (page);
+ return NULL;
+}
+
void
gis_page_locale_changed (GisPage *page)
{
diff --git a/gnome-initial-setup/gis-page.h b/gnome-initial-setup/gis-page.h
index 77e427c..7c25c98 100644
--- a/gnome-initial-setup/gis-page.h
+++ b/gnome-initial-setup/gis-page.h
@@ -60,6 +60,7 @@ struct _GisPageClass
GtkBuilder * (*get_builder) (GisPage *page);
void (*locale_changed) (GisPage *page);
+ GtkAccelGroup * (*get_accel_group) (GisPage *page);
gboolean (*apply) (GisPage *page,
GCancellable *cancellable);
void (*save_data) (GisPage *page);
@@ -73,6 +74,7 @@ void gis_page_set_title (GisPage *page, char *title);
gboolean gis_page_get_complete (GisPage *page);
void gis_page_set_complete (GisPage *page, gboolean complete);
GtkWidget * gis_page_get_action_widget (GisPage *page);
+GtkAccelGroup * gis_page_get_accel_group (GisPage *page);
void gis_page_locale_changed (GisPage *page);
void gis_page_apply_begin (GisPage *page, GisPageApplyCallback callback, gpointer user_data);
void gis_page_apply_cancel (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 2489d91..51025e4 100644
--- a/gnome-initial-setup/pages/account/gis-account-page.c
+++ b/gnome-initial-setup/pages/account/gis-account-page.c
@@ -86,7 +86,7 @@ struct _GisAccountPagePrivate
GCancellable *cancellable;
gboolean join_prompted;
- GtkWidget *action;
+ GtkAccelGroup *accel_group;
};
typedef struct _GisAccountPagePrivate GisAccountPagePrivate;
@@ -233,8 +233,6 @@ set_has_enterprise (GisAccountPage *page,
if (!has_enterprise)
set_mode (page, UM_LOCAL);
-
- gtk_widget_set_visible (priv->action, has_enterprise);
}
static void
@@ -1112,11 +1110,14 @@ on_entry_changed (GtkEditable *editable,
}
static void
-toggle_mode (GtkToggleButton *button,
- gpointer user_data)
+switch_login_mode (GisAccountPage *page)
{
- set_mode (GIS_ACCOUNT_PAGE (user_data),
- gtk_toggle_button_get_active (button) ? UM_ENTERPRISE : UM_LOCAL);
+ GisAccountPagePrivate *priv = gis_account_page_get_instance_private (page);
+
+ if (priv->mode == UM_LOCAL)
+ set_mode (page, UM_ENTERPRISE);
+ else
+ set_mode (page, UM_LOCAL);
}
static gboolean
@@ -1206,9 +1207,13 @@ gis_account_page_constructed (GObject *object)
priv->has_enterprise = FALSE;
- priv->action = WID("page-toggle");
- g_signal_connect (priv->action, "toggled", G_CALLBACK (toggle_mode), page);
- g_object_bind_property (page, "applying", priv->action, "sensitive", G_BINDING_INVERT_BOOLEAN);
+ priv->accel_group = gtk_accel_group_new ();
+ GClosure *closure = g_cclosure_new_swap (G_CALLBACK (switch_login_mode), page, NULL);
+
+ /* Use Ctrl+Alt+e to activate the enterprise login mode */
+ gtk_accel_group_connect (priv->accel_group, GDK_KEY_e, GDK_CONTROL_MASK | GDK_MOD1_MASK, 0, closure);
+ g_closure_unref (closure);
+
/* force a refresh by setting to an invalid value */
priv->mode = NUM_MODES;
@@ -1233,10 +1238,20 @@ gis_account_page_dispose (GObject *object)
g_clear_object (&priv->realm_manager);
g_clear_object (&priv->realm);
g_clear_object (&priv->cancellable);
+ g_clear_object (&priv->accel_group);
G_OBJECT_CLASS (gis_account_page_parent_class)->dispose (object);
}
+static GtkAccelGroup *
+gis_account_page_get_accel_group (GisPage *page)
+{
+ GisAccountPage *account_page = GIS_ACCOUNT_PAGE (page);
+ GisAccountPagePrivate *priv = gis_account_page_get_instance_private (account_page);
+
+ return priv->accel_group;
+}
+
static void
gis_account_page_locale_changed (GisPage *page)
{
@@ -1251,6 +1266,7 @@ gis_account_page_class_init (GisAccountPageClass *klass)
page_class->page_id = PAGE_ID;
page_class->locale_changed = gis_account_page_locale_changed;
+ page_class->get_accel_group = gis_account_page_get_accel_group;
page_class->apply = gis_account_page_apply;
page_class->save_data = gis_account_page_save_data;
object_class->constructed = gis_account_page_constructed;
diff --git a/gnome-initial-setup/pages/account/gis-account-page.ui
b/gnome-initial-setup/pages/account/gis-account-page.ui
index bf50b8d..666d7b3 100644
--- a/gnome-initial-setup/pages/account/gis-account-page.ui
+++ b/gnome-initial-setup/pages/account/gis-account-page.ui
@@ -588,7 +588,7 @@
</child>
<child>
<object class="GtkToggleButton" id="page-toggle">
- <property name="visible">True</property>
+ <property name="visible">False</property>
<property name="use_underline">True</property>
<property name="label" translatable="true">_Use Enterprise Login</property>
<property name="halign">start</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]