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



Author: mccann
Date: Wed Feb 27 20:01:19 2008
New Revision: 5890
URL: http://svn.gnome.org/viewvc/gdm?rev=5890&view=rev

Log:
2008-02-27  William Jon McCann  <jmccann redhat com>

	* gui/simple-greeter/gdm-greeter-login-window.c: (capslock_update),
	(is_capslock_on), (load_theme), (window_key_press),
	(gdm_greeter_login_window_init):
	* gui/simple-greeter/gdm-greeter-login-window.glade:
	Add a capslock key warning message.



Modified:
   trunk/ChangeLog
   trunk/gui/simple-greeter/gdm-greeter-login-window.c
   trunk/gui/simple-greeter/gdm-greeter-login-window.glade

Modified: trunk/gui/simple-greeter/gdm-greeter-login-window.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-login-window.c	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-login-window.c	Wed Feb 27 20:01:19 2008
@@ -46,6 +46,7 @@
 
 #include <gdk/gdkkeysyms.h>
 #include <gdk/gdkx.h>
+#include <X11/XKBlib.h>
 
 #include <gtk/gtk.h>
 
@@ -109,9 +110,12 @@
 {
         GladeXML        *xml;
         GtkWidget       *user_chooser;
+        GtkWidget       *auth_capslock_label;
         gboolean         display_is_local;
         char            *timeformat;
 
+        gboolean         caps_lock_on;
+
         gboolean         timed_login_enabled;
         guint            timed_login_delay;
         guint            timed_login_timeout_id;
@@ -146,6 +150,41 @@
 G_DEFINE_TYPE (GdmGreeterLoginWindow, gdm_greeter_login_window, GTK_TYPE_WINDOW)
 
 static void
+capslock_update (GdmGreeterLoginWindow *login_window,
+                 gboolean               is_on)
+{
+
+        login_window->priv->caps_lock_on = is_on;
+
+        if (login_window->priv->auth_capslock_label == NULL) {
+                return;
+        }
+
+        if (is_on) {
+                gtk_label_set_text (GTK_LABEL (login_window->priv->auth_capslock_label),
+                                    _("You have the Caps Lock key on."));
+        } else {
+                gtk_label_set_text (GTK_LABEL (login_window->priv->auth_capslock_label),
+                                    "");
+        }
+}
+
+static gboolean
+is_capslock_on (void)
+{
+        unsigned int states;
+        Display     *dsp;
+
+        dsp = GDK_DISPLAY ();
+
+        if (XkbGetIndicatorState (dsp, XkbUseCoreKbd, &states) != Success) {
+                return FALSE;
+        }
+
+        return (states & ShiftMask) != 0;
+}
+
+static void
 set_busy (GdmGreeterLoginWindow *login_window)
 {
         GdkCursor *cursor;
@@ -1199,6 +1238,8 @@
 
         gtk_widget_show (login_window->priv->user_chooser);
 
+        login_window->priv->auth_capslock_label = glade_xml_get_widget (login_window->priv->xml, "auth-capslock-label");
+
         button = glade_xml_get_widget (login_window->priv->xml, "suspend-button");
         g_signal_connect (button, "clicked", G_CALLBACK (suspend_button_clicked), login_window);
 
@@ -1494,6 +1535,22 @@
         g_type_class_add_private (klass, sizeof (GdmGreeterLoginWindowPrivate));
 }
 
+static gint
+window_key_press (GtkWidget             *widget,
+                  GdkEventKey           *event,
+                  GdmGreeterLoginWindow *login_window)
+{
+        gboolean capslock_on;
+
+        capslock_on = is_capslock_on ();
+
+        if (capslock_on != login_window->priv->caps_lock_on) {
+                capslock_update (login_window, capslock_on);
+        }
+
+        return TRUE;
+}
+
 static void
 gdm_greeter_login_window_init (GdmGreeterLoginWindow *login_window)
 {
@@ -1511,6 +1568,11 @@
         gtk_window_set_skip_pager_hint (GTK_WINDOW (login_window), TRUE);
         gtk_window_stick (GTK_WINDOW (login_window));
         gtk_container_set_border_width (GTK_CONTAINER (login_window), 25);
+
+        g_signal_connect (login_window, "key_press_event",
+                          G_CALLBACK (window_key_press),
+                          login_window);
+
 }
 
 static void

Modified: trunk/gui/simple-greeter/gdm-greeter-login-window.glade
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-login-window.glade	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-login-window.glade	Wed Feb 27 20:01:19 2008
@@ -153,6 +153,21 @@
                     <property name="position">2</property>
                   </packing>
                 </child>
+                <child>
+                  <widget class="GtkHBox" id="auth-capslock-box">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkLabel" id="auth-capslock-label">
+                        <property name="visible">True</property>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
               </widget>
             </child>
           </widget>



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