summaryrefslogtreecommitdiff
path: root/gui/simple-greeter/gdm-simple-greeter.c
diff options
context:
space:
mode:
Diffstat (limited to 'gui/simple-greeter/gdm-simple-greeter.c')
-rw-r--r--gui/simple-greeter/gdm-simple-greeter.c38
1 files changed, 25 insertions, 13 deletions
diff --git a/gui/simple-greeter/gdm-simple-greeter.c b/gui/simple-greeter/gdm-simple-greeter.c
index 66eedfb1..45f5455d 100644
--- a/gui/simple-greeter/gdm-simple-greeter.c
+++ b/gui/simple-greeter/gdm-simple-greeter.c
@@ -147,6 +147,23 @@ set_sensitive (GdmSimpleGreeter *greeter,
}
static void
+set_focus (GdmSimpleGreeter *greeter)
+{
+ GtkWidget *top_level;
+ GtkWidget *entry;
+
+ entry = glade_xml_get_widget (GDM_SIMPLE_GREETER (greeter)->priv->xml, "auth-entry");
+ top_level = glade_xml_get_widget (greeter->priv->xml, "auth-window");
+
+ gdk_window_focus (top_level->window, GDK_CURRENT_TIME);
+
+ if (! GTK_WIDGET_HAS_FOCUS (entry)) {
+ gtk_widget_grab_focus (entry);
+ }
+}
+
+
+static void
set_message (GdmSimpleGreeter *greeter,
const char *text)
{
@@ -180,14 +197,11 @@ reset_dialog (GdmSimpleGreeter *greeter)
label = glade_xml_get_widget (GDM_SIMPLE_GREETER (greeter)->priv->xml, "auth-label");
gtk_label_set_text (GTK_LABEL (label), "");
- if (! GTK_WIDGET_HAS_FOCUS (entry)) {
- gtk_widget_grab_focus (entry);
- }
-
set_message (greeter, "");
- set_ready (greeter);
set_sensitive (greeter, TRUE);
+ set_ready (greeter);
+ set_focus (GDM_SIMPLE_GREETER (greeter));
}
static gboolean
@@ -253,13 +267,14 @@ gdm_simple_greeter_info_query (GdmGreeter *greeter,
label = glade_xml_get_widget (GDM_SIMPLE_GREETER (greeter)->priv->xml, "auth-label");
gtk_label_set_text (GTK_LABEL (label), text);
+ set_sensitive (GDM_SIMPLE_GREETER (greeter), TRUE);
+ set_ready (GDM_SIMPLE_GREETER (greeter));
+ set_focus (GDM_SIMPLE_GREETER (greeter));
+
if (! GTK_WIDGET_HAS_FOCUS (entry)) {
gtk_widget_grab_focus (entry);
}
- set_ready (GDM_SIMPLE_GREETER (greeter));
- set_sensitive (GDM_SIMPLE_GREETER (greeter), TRUE);
-
return TRUE;
}
@@ -283,12 +298,9 @@ gdm_simple_greeter_secret_info_query (GdmGreeter *greeter,
label = glade_xml_get_widget (GDM_SIMPLE_GREETER (greeter)->priv->xml, "auth-label");
gtk_label_set_text (GTK_LABEL (label), text);
- if (! GTK_WIDGET_HAS_FOCUS (entry)) {
- gtk_widget_grab_focus (entry);
- }
-
- set_ready (GDM_SIMPLE_GREETER (greeter));
set_sensitive (GDM_SIMPLE_GREETER (greeter), TRUE);
+ set_ready (GDM_SIMPLE_GREETER (greeter));
+ set_focus (GDM_SIMPLE_GREETER (greeter));
return TRUE;
}