diff -c -p -r gdm-2.30.5.orig/gui/simple-greeter/gdm-greeter-login-window.c gdm-2.30.5/gui/simple-greeter/gdm-greeter-login-window.c
*** gdm-2.30.5.orig/gui/simple-greeter/gdm-greeter-login-window.c	2010-08-11 19:40:07.000000000 +0200
--- gdm-2.30.5/gui/simple-greeter/gdm-greeter-login-window.c	2011-02-24 10:45:37.690405666 +0100
*************** struct GdmGreeterLoginWindowPrivate
*** 115,120 ****
--- 115,121 ----
  
          gboolean         user_list_disabled;
          guint            num_queries;
+         gboolean         has_pending_queries;
  
          gboolean         timed_login_already_enabled;
          gboolean         timed_login_enabled;
*************** on_login_button_clicked_answer_query (Gt
*** 349,355 ****
          text = gtk_entry_get_text (GTK_ENTRY (entry));
  
          _gdm_greeter_login_window_set_interactive (login_window, TRUE);
!         g_signal_emit (login_window, signals[QUERY_ANSWER], 0, text);
  }
  
  static void
--- 350,360 ----
          text = gtk_entry_get_text (GTK_ENTRY (entry));
  
          _gdm_greeter_login_window_set_interactive (login_window, TRUE);
! 
! 	if (login_window->priv->has_pending_queries) {
! 		login_window->priv->has_pending_queries = FALSE;
! 	        g_signal_emit (login_window, signals[QUERY_ANSWER], 0, text);
! 	}
  }
  
  static void
*************** reset_dialog (GdmGreeterLoginWindow *log
*** 552,557 ****
--- 557,563 ----
          set_sensitive (login_window, FALSE);
  
          login_window->priv->num_queries = 0;
+         login_window->priv->has_pending_queries = FALSE;
  
          if (dialog_mode == MODE_SELECTION) {
                  if (login_window->priv->timed_login_enabled) {
*************** gdm_greeter_login_window_info_query (Gdm
*** 765,770 ****
--- 771,777 ----
          g_return_val_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window), FALSE);
  
          login_window->priv->num_queries++;
+         login_window->priv->has_pending_queries = TRUE;
          maybe_show_cancel_button (login_window);
  
          g_debug ("GdmGreeterLoginWindow: info query: %s", text);
*************** gdm_greeter_login_window_secret_info_que
*** 797,802 ****
--- 804,810 ----
          g_return_val_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window), FALSE);
  
          login_window->priv->num_queries++;
+         login_window->priv->has_pending_queries = TRUE;
          maybe_show_cancel_button (login_window);
  
          entry = GTK_WIDGET (gtk_builder_get_object (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->builder, "auth-prompt-entry"));
