b1f3e76
--- gdm-2.17.7/gui/gdmlogin.c.move-default-message	2007-02-12 00:40:13.000000000 -0500
b1f3e76
+++ gdm-2.17.7/gui/gdmlogin.c	2007-02-23 22:53:47.000000000 -0500
b1f3e76
@@ -160,6 +160,7 @@
b1f3e76
 extern const gchar *current_session;
b1f3e76
 extern gboolean session_dir_whacked_out;
b1f3e76
 extern gint gdm_timed_delay;
b1f3e76
+static gboolean using_fallback_message = FALSE;
b1f3e76
 
b1f3e76
 static gboolean first_prompt = TRUE;
b1f3e76
 
b1f3e76
@@ -1558,9 +1559,20 @@
b1f3e76
 					gdm_config_get_string (GDM_KEY_SOUND_ON_LOGIN_FILE),
b1f3e76
 					gdm_config_get_bool   (GDM_KEY_SOUND_ON_LOGIN));
b1f3e76
 		gtk_label_set_text_with_mnemonic (GTK_LABEL (label), _("_Username:"));
b1f3e76
+                if (ve_string_empty (gtk_label_get_text (GTK_LABEL (msg)))) {
b1f3e76
+                        gtk_label_set_text (GTK_LABEL (msg),
b1f3e76
+                                            _("Please enter your username"));
b1f3e76
+                        using_fallback_message = TRUE;
b1f3e76
+                }
b1f3e76
+
b1f3e76
 	} else {
b1f3e76
 		if (tmp != NULL)
b1f3e76
 			gtk_label_set_text (GTK_LABEL (label), tmp);
b1f3e76
+                if (using_fallback_message) {
b1f3e76
+                        gtk_label_set_text (GTK_LABEL (msg), "");
b1f3e76
+                        using_fallback_message = FALSE;
b1f3e76
+                }
b1f3e76
+
b1f3e76
 	}
b1f3e76
 	g_free (tmp);
b1f3e76
 
b1f3e76
@@ -1648,6 +1660,7 @@
b1f3e76
 		g_free (tmp);
b1f3e76
 	}
b1f3e76
 	replace_msg = FALSE;
b1f3e76
+	using_fallback_message = FALSE;
b1f3e76
 
b1f3e76
 	gtk_widget_show (GTK_WIDGET (msg));
b1f3e76
 	printf ("%c\n", STX);
b1f3e76
@@ -1828,9 +1841,7 @@
b1f3e76
 	if (browser_ok && gdm_config_get_bool (GDM_KEY_BROWSER))
b1f3e76
 	    gtk_widget_set_sensitive (GTK_WIDGET (browser), TRUE);
b1f3e76
 
b1f3e76
-	tmp = ve_locale_to_utf8 (args);
b1f3e76
-	gtk_label_set_text (GTK_LABEL (msg), tmp);
b1f3e76
-	g_free (tmp);
b1f3e76
+	gtk_label_set_text (GTK_LABEL (msg), "");
b1f3e76
 	gtk_widget_show (GTK_WIDGET (msg));
b1f3e76
 
b1f3e76
 	printf ("%c\n", STX);
b1f3e76
--- gdm-2.17.7/gui/greeter/greeter_item_pam.c.move-default-message	2007-02-12 00:40:12.000000000 -0500
b1f3e76
+++ gdm-2.17.7/gui/greeter/greeter_item_pam.c	2007-02-23 22:50:22.000000000 -0500
b1f3e76
@@ -46,6 +46,7 @@
b1f3e76
 gboolean require_quarter = FALSE;
b1f3e76
 
b1f3e76
 extern gboolean greeter_probably_login_prompt;
b1f3e76
+static gboolean using_fallback_message = FALSE;
b1f3e76
 extern GtkButton *gtk_ok_button;
b1f3e76
 extern GtkButton *gtk_start_again_button;
b1f3e76
 
b1f3e76
@@ -250,13 +251,35 @@
b1f3e76
 			 int         entry_len,
b1f3e76
 			 gboolean    entry_visible)
b1f3e76
 {
b1f3e76
+  GreeterItemInfo *message_info;
b1f3e76
   GreeterItemInfo *conversation_info;
b1f3e76
   GreeterItemInfo *entry_info;
b1f3e76
   GtkWidget *entry;
b1f3e76
 
b1f3e76
+  message_info = greeter_lookup_id ("pam-message");
b1f3e76
   conversation_info = greeter_lookup_id ("pam-prompt");
b1f3e76
   entry_info = greeter_lookup_id ("user-pw-entry");
b1f3e76
 
b1f3e76
+  if (strcmp (message, _("Username:")) == 0 && message_info)
b1f3e76
+    {
b1f3e76
+      gchar *text;
b1f3e76
+      text = NULL;
b1f3e76
+      g_object_get (G_OBJECT (message_info->item),
b1f3e76
+                    "text", &text,
b1f3e76
+                    NULL);
b1f3e76
+      if (ve_string_empty (text))
b1f3e76
+        {
b1f3e76
+          set_text (message_info, _("Please enter your username"));
b1f3e76
+          using_fallback_message = TRUE;
b1f3e76
+        }
b1f3e76
+      g_free (text);
b1f3e76
+    } 
b1f3e76
+  else if (using_fallback_message)
b1f3e76
+    {
b1f3e76
+      set_text (message_info, "");
b1f3e76
+      using_fallback_message = FALSE;
b1f3e76
+    }
b1f3e76
+
b1f3e76
   if (conversation_info)
b1f3e76
     {
b1f3e76
       set_text (conversation_info, message);
b1f3e76
@@ -296,6 +319,7 @@
b1f3e76
        * we try to collect them until the next prompt or reset or
b1f3e76
        * whatnot */
b1f3e76
       if ( ! replace_msg &&
b1f3e76
+	   ! using_fallback_message &&
b1f3e76
 	   /* empty message is for clearing */
b1f3e76
 	   ! ve_string_empty (message))
b1f3e76
 	{
b1f3e76
@@ -315,6 +339,7 @@
b1f3e76
         set_text (message_info, message);
b1f3e76
     }
b1f3e76
   replace_msg = FALSE;
b1f3e76
+  using_fallback_message = FALSE;
b1f3e76
 }
b1f3e76
 
b1f3e76
 
b1f3e76
--- gdm-2.17.7/daemon/verify-pam.c.move-default-message	2007-02-23 22:50:22.000000000 -0500
b1f3e76
+++ gdm-2.17.7/daemon/verify-pam.c	2007-02-23 22:50:22.000000000 -0500
b1f3e76
@@ -534,12 +534,6 @@
b1f3e76
 	case PAM_PROMPT_ECHO_ON:
b1f3e76
  	    if (strcmp (m, _("Username:")) == 0) {
b1f3e76
 		    if ( ve_string_empty (selected_user)) {
b1f3e76
-			    /* this is an evil hack, but really there is no way we'll
b1f3e76
-			    know this is a username prompt.  However we SHOULD NOT
b1f3e76
-			    rely on this working.  The pam modules can set their
b1f3e76
-			    prompt to whatever they wish to */
b1f3e76
-			    gdm_slave_greeter_ctl_no_ret
b1f3e76
-				    (GDM_MSG, _("Please enter your username"));
b1f3e76
 			    s = gdm_slave_greeter_ctl (GDM_PROMPT, m);
b1f3e76
 			    /* this will clear the message */
b1f3e76
 			    gdm_slave_greeter_ctl_no_ret (GDM_MSG, "");
b1f3e76
--- gdm-2.17.7/daemon/verify-crypt.c.move-default-message	2007-02-12 00:40:19.000000000 -0500
b1f3e76
+++ gdm-2.17.7/daemon/verify-crypt.c	2007-02-23 22:50:22.000000000 -0500
b1f3e76
@@ -115,7 +115,6 @@
b1f3e76
 authenticate_again:
b1f3e76
 	    /* Ask for the user's login */
b1f3e76
 	    gdm_verify_select_user (NULL);
b1f3e76
-	    gdm_slave_greeter_ctl_no_ret (GDM_MSG, _("Please enter your username"));
b1f3e76
 	    login = gdm_slave_greeter_ctl (GDM_PROMPT, _("Username:"));
b1f3e76
 	    if (login == NULL ||
b1f3e76
 		gdm_slave_greeter_check_interruption ()) {
b1f3e76
--- gdm-2.17.7/daemon/verify-shadow.c.move-default-message	2007-02-12 00:40:19.000000000 -0500
b1f3e76
+++ gdm-2.17.7/daemon/verify-shadow.c	2007-02-23 22:50:22.000000000 -0500
b1f3e76
@@ -114,7 +114,6 @@
b1f3e76
 authenticate_again:
b1f3e76
 	    /* Ask for the user's login */
b1f3e76
 	    gdm_verify_select_user (NULL);
b1f3e76
-	    gdm_slave_greeter_ctl_no_ret (GDM_MSG, _("Please enter your username"));
b1f3e76
 	    login = gdm_slave_greeter_ctl (GDM_PROMPT, _("Username:"));
b1f3e76
 	    if (login == NULL ||
b1f3e76
 		gdm_slave_greeter_check_interruption ()) {