gdm r5890 - in trunk: . gui/simple-greeter
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gdm r5890 - in trunk: . gui/simple-greeter
- Date: Wed, 27 Feb 2008 20:01:20 +0000 (GMT)
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]