summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2009-03-02 15:23:51 -0500
committerRay Strode <rstrode@redhat.com>2009-04-17 10:24:50 -0400
commitadf32974d4fb816688498552727d664c80653064 (patch)
tree7ec961581bd8c42cf5e5830aa12774ced4c3de04
parent23902b5f178ef6662850ae81a96f3c9aafc66317 (diff)
downloadgdm-adf32974d4fb816688498552727d664c80653064.tar.gz
Drop the different auth modes in favor of calling reset manually
-rw-r--r--gui/simple-greeter/gdm-greeter-login-window.c57
1 files changed, 35 insertions, 22 deletions
diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
index fa931085..ed009a47 100644
--- a/gui/simple-greeter/gdm-greeter-login-window.c
+++ b/gui/simple-greeter/gdm-greeter-login-window.c
@@ -105,8 +105,7 @@
enum {
MODE_SELECTION = 0,
- MODE_SINGLE_AUTHENTICATION,
- MODE_MULTIPLE_AUTHENTICATION,
+ MODE_AUTHENTICATION
};
enum {
@@ -587,8 +586,7 @@ sensitize_power_buttons_timeout (GdmGreeterLoginWindow *login_window)
sensitize_widget (login_window, "suspend-button", TRUE);
sensitize_widget (login_window, "disconnect-button", TRUE);
break;
- case MODE_SINGLE_AUTHENTICATION:
- case MODE_MULTIPLE_AUTHENTICATION:
+ case MODE_AUTHENTICATION:
break;
default:
g_assert_not_reached ();
@@ -647,7 +645,6 @@ switch_mode (GdmGreeterLoginWindow *login_window,
show_widget (login_window, "auth-page-box", FALSE);
show_widget (login_window, "conversation-list", FALSE);
- gtk_widget_set_sensitive (login_window->priv->conversation_list, TRUE);
add_sensitize_power_buttons_timeout (login_window);
sensitize_widget (login_window, "shutdown-button", FALSE);
@@ -657,8 +654,7 @@ switch_mode (GdmGreeterLoginWindow *login_window,
default_name = NULL;
break;
- case MODE_SINGLE_AUTHENTICATION:
- case MODE_MULTIPLE_AUTHENTICATION:
+ case MODE_AUTHENTICATION:
gtk_widget_set_size_request (GTK_WIDGET (login_window),
GTK_WIDGET (login_window)->allocation.width,
-1);
@@ -672,14 +668,6 @@ switch_mode (GdmGreeterLoginWindow *login_window,
number_of_tasks = gdm_task_list_get_number_of_tasks (GDM_TASK_LIST (login_window->priv->conversation_list));
show_widget (login_window, "conversation-list", number_of_tasks > 1);
- if (number == MODE_SINGLE_AUTHENTICATION) {
- g_debug ("GdmGreeterLoginWindow: Single authentication, 1 task");
- gtk_widget_set_sensitive (login_window->priv->conversation_list, FALSE);
- } else {
- g_debug ("GdmGreeterLoginWindow: Multiple authentication, %d tasks", number_of_tasks);
- gtk_widget_set_sensitive (login_window->priv->conversation_list, TRUE);
- }
-
default_name = "log-in-button";
break;
default:
@@ -1614,7 +1602,7 @@ begin_verification (GdmGreeterLoginWindow *login_window)
begin_task_verification,
login_window);
- switch_mode (login_window, MODE_MULTIPLE_AUTHENTICATION);
+ switch_mode (login_window, MODE_AUTHENTICATION);
}
static gboolean
@@ -1661,7 +1649,7 @@ on_user_chosen (GdmGreeterLoginWindow *login_window,
begin_verification_for_selected_user (login_window);
- switch_mode (login_window, MODE_MULTIPLE_AUTHENTICATION);
+ switch_mode (login_window, MODE_AUTHENTICATION);
}
static void
@@ -1677,7 +1665,30 @@ begin_auto_login (GdmGreeterLoginWindow *login_window)
set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN);
set_message (login_window, _("Select language and click Log In"));
- switch_mode (login_window, MODE_SINGLE_AUTHENTICATION);
+ switch_mode (login_window, MODE_AUTHENTICATION);
+}
+
+static gboolean
+reset_task_if_not_given (GdmTaskList *task_list,
+ GdmTask *task,
+ GdmTask *given_task)
+{
+ if (task == given_task) {
+ return FALSE;
+ }
+
+ gdm_conversation_reset (GDM_CONVERSATION (task));
+ return FALSE;
+}
+
+static void
+reset_every_task_but_given_task (GdmGreeterLoginWindow *login_window,
+ GdmTask *task)
+{
+ gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list),
+ (GdmTaskListForeachFunc)
+ reset_task_if_not_given,
+ task);
}
static void
@@ -1692,15 +1703,18 @@ begin_single_service_verification (GdmGreeterLoginWindow *login_window,
g_debug ("GdmGreeterLoginWindow: %s has no task associated with it", service_name);
return;
}
- g_debug ("GdmGreeterLoginWindow: Beginning auth conversation for item %s", service_name);
+ g_debug ("GdmGreeterLoginWindow: Beginning %s auth conversation", service_name);
+
/* FIXME: we should probably give the plugin more say for
* what happens here.
*/
g_signal_emit (login_window, signals[BEGIN_VERIFICATION], 0, service_name);
- switch_mode (login_window, MODE_SINGLE_AUTHENTICATION);
+ switch_mode (login_window, MODE_AUTHENTICATION);
gdm_task_list_set_active_task (GDM_TASK_LIST (login_window->priv->conversation_list), task);
+ reset_every_task_but_given_task (login_window, task);
+
g_object_unref (task);
}
@@ -2086,8 +2100,7 @@ gdm_greeter_login_window_key_press_event (GtkWidget *widget,
login_window = GDM_GREETER_LOGIN_WINDOW (widget);
if (event->keyval == GDK_Escape) {
- if (login_window->priv->dialog_mode == MODE_SINGLE_AUTHENTICATION ||
- login_window->priv->dialog_mode == MODE_MULTIPLE_AUTHENTICATION) {
+ if (login_window->priv->dialog_mode == MODE_AUTHENTICATION) {
do_cancel (GDM_GREETER_LOGIN_WINDOW (widget));
}
}