gdm r5734 - in trunk: . gui/simple-greeter



Author: halfline
Date: Fri Feb  8 06:38:12 2008
New Revision: 5734
URL: http://svn.gnome.org/viewvc/gdm?rev=5734&view=rev

Log:
2008-02-08  Ray Strode  <rstrode redhat com>

	* gui/simple-greeter/gdm-greeter-session.c
	(gdm_greeter_session_init), (gdm_greeter_session_event_handler):
	Listen for key presses and try to apply them as mnemonics on
	all toplevels, not just the focused toplevel (so for instance,
	pressing Alt-L should focus the language option widget in the
	panel when the user is doing the pam conversation in the login
	window)


Modified:
   trunk/ChangeLog
   trunk/gui/simple-greeter/gdm-greeter-session.c

Modified: trunk/gui/simple-greeter/gdm-greeter-session.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-session.c	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-session.c	Fri Feb  8 06:38:12 2008
@@ -615,6 +615,28 @@
 }
 
 static void
+gdm_greeter_session_event_handler(GdkEvent          *event,
+                                  GdmGreeterSession *session)
+{
+        if (event->type == GDK_KEY_PRESS) {
+                if (session->priv->panel != NULL &&
+                    gtk_window_activate_key (GTK_WINDOW (session->priv->panel),
+                                             ((GdkEventKey *) event))) {
+
+                        return;
+                }
+
+                if (session->priv->login_window != NULL &&
+                    gtk_window_activate_key (GTK_WINDOW (session->priv->login_window),
+                                             ((GdkEventKey *) event))) {
+                        return;
+                }
+        }
+
+        gtk_main_do_event (event);
+}
+
+static void
 gdm_greeter_session_init (GdmGreeterSession *session)
 {
 
@@ -666,6 +688,12 @@
                           G_CALLBACK (on_selected_user_changed),
                           session);
 
+        /* We want to listen for panel mnemonics even if the
+         * login window is focused, so we intercept them here.
+         */
+        gdk_event_handler_set ((GdkEventFunc) gdm_greeter_session_event_handler,
+                               session, NULL);
+
         /* FIXME: we should really do this in settings daemon */
         setup_at_tools (session);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]