4070751
--- gdm-2.19.3/gui/gdmlogin.c.move-default-message	2007-06-17 13:07:27.000000000 -0400
4070751
+++ gdm-2.19.3/gui/gdmlogin.c	2007-06-18 15:15:37.000000000 -0400
4070751
@@ -169,6 +169,7 @@
4070751
 extern const gchar *current_session;
4070751
 extern gboolean session_dir_whacked_out;
4070751
 extern gint gdm_timed_delay;
4070751
+static gboolean using_fallback_message = FALSE;
4070751
 
4070751
 static gboolean first_prompt = TRUE;
4070751
 
4070751
@@ -1357,9 +1358,20 @@
4070751
 					gdm_config_get_string (GDM_KEY_SOUND_ON_LOGIN_FILE),
4070751
 					gdm_config_get_bool   (GDM_KEY_SOUND_ON_LOGIN));
4070751
 		gtk_label_set_text_with_mnemonic (GTK_LABEL (label), _("_Username:"));
4070751
+                if (ve_string_empty (gtk_label_get_text (GTK_LABEL (msg)))) {
4070751
+                        gtk_label_set_text (GTK_LABEL (msg),
4070751
+                                            _("Please enter your username"));
4070751
+                        using_fallback_message = TRUE;
4070751
+                }
4070751
+
4070751
 	} else {
4070751
 		if (tmp != NULL)
4070751
 			gtk_label_set_text (GTK_LABEL (label), tmp);
4070751
+                if (using_fallback_message) {
4070751
+                        gtk_label_set_text (GTK_LABEL (msg), "");
4070751
+                        using_fallback_message = FALSE;
4070751
+                }
4070751
+
4070751
 	}
4070751
 	g_free (tmp);
4070751
 
4070751
@@ -1447,6 +1459,7 @@
4070751
 		g_free (tmp);
4070751
 	}
4070751
 	replace_msg = FALSE;
4070751
+	using_fallback_message = FALSE;
4070751
 
4070751
 	gtk_widget_show (GTK_WIDGET (msg));
4070751
 	printf ("%c\n", STX);
4070751
@@ -1625,9 +1638,7 @@
4070751
 	if (browser_ok && gdm_config_get_bool (GDM_KEY_BROWSER))
4070751
 	    gtk_widget_set_sensitive (GTK_WIDGET (browser), TRUE);
4070751
 
4070751
-	tmp = ve_locale_to_utf8 (args);
4070751
-	gtk_label_set_text (GTK_LABEL (msg), tmp);
4070751
-	g_free (tmp);
4070751
+	gtk_label_set_text (GTK_LABEL (msg), "");
4070751
 	gtk_widget_show (GTK_WIDGET (msg));
4070751
 
4070751
 	printf ("%c\n", STX);
4070751
--- gdm-2.19.3/gui/greeter/greeter_item_pam.c.move-default-message	2007-06-17 13:07:26.000000000 -0400
4070751
+++ gdm-2.19.3/gui/greeter/greeter_item_pam.c	2007-06-18 15:15:37.000000000 -0400
4070751
@@ -47,6 +47,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
 
4070751
@@ -241,13 +242,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);
4070751
@@ -312,6 +335,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
 	{
4070751
@@ -331,6 +355,7 @@
b1f3e76
         set_text (message_info, message);
b1f3e76
     }
b1f3e76
   replace_msg = FALSE;
b1f3e76
+  using_fallback_message = FALSE;
b1f3e76
 }
b1f3e76
 
b1f3e76
 
4070751
--- gdm-2.19.3/daemon/verify-pam.c.move-default-message	2007-06-17 13:07:38.000000000 -0400
4070751
+++ gdm-2.19.3/daemon/verify-pam.c	2007-06-18 15:17:19.000000000 -0400
4070751
@@ -540,12 +540,6 @@
6941265
 		case PAM_PROMPT_ECHO_ON:
6941265
 			if (strcmp (m, _("Username:")) == 0) {
4070751
 				if (ve_string_empty (selected_user)) {
6941265
-					/* this is an evil hack, but really there is no way we'll
6941265
-					   know this is a username prompt.  However we SHOULD NOT
6941265
-					   rely on this working.  The pam modules can set their
6941265
-					   prompt to whatever they wish to */
6941265
-					gdm_slave_greeter_ctl_no_ret
6941265
-						(GDM_MSG, _("Please enter your username"));
6941265
 					s = gdm_slave_greeter_ctl (GDM_PROMPT, m);
6941265
 					/* this will clear the message */
6941265
 					gdm_slave_greeter_ctl_no_ret (GDM_MSG, "");
4070751
--- gdm-2.19.3/daemon/verify-crypt.c.move-default-message	2007-06-17 13:07:39.000000000 -0400
4070751
+++ gdm-2.19.3/daemon/verify-crypt.c	2007-06-18 15:15:37.000000000 -0400
4070751
@@ -125,7 +125,6 @@
6941265
 	authenticate_again:
6941265
 		/* Ask for the user's login */
6941265
 		gdm_verify_select_user (NULL);
6941265
-		gdm_slave_greeter_ctl_no_ret (GDM_MSG, _("Please enter your username"));
6941265
 		login = gdm_slave_greeter_ctl (GDM_PROMPT, _("Username:"));
6941265
 		if (login == NULL ||
6941265
 		    gdm_slave_greeter_check_interruption ()) {
4070751
--- gdm-2.19.3/daemon/verify-shadow.c.move-default-message	2007-06-17 13:07:38.000000000 -0400
4070751
+++ gdm-2.19.3/daemon/verify-shadow.c	2007-06-18 15:15:37.000000000 -0400
4070751
@@ -127,7 +127,6 @@
6941265
 	authenticate_again:
6941265
 		/* Ask for the user's login */
6941265
 		gdm_verify_select_user (NULL);
6941265
-		gdm_slave_greeter_ctl_no_ret (GDM_MSG, _("Please enter your username"));
6941265
 		login = gdm_slave_greeter_ctl (GDM_PROMPT, _("Username:"));
6941265
 		if (login == NULL ||
6941265
 		    gdm_slave_greeter_check_interruption ()) {