kov changed libgksu/branches/libgksu2/libgksuui/ChangeLog,
libgksu/branches/libgksu2/libgksuui/gksuui-dialog.c,
libgksu/branches/libgksu2/libgksuui/gksuui-dialog.h
Gustavo Noronha
kov at costa.debian.org
Wed Jan 25 00:08:28 UTC 2006
Mensagem de log:
applied patch by Michael Vogt to report that capslock is enabled
with small modifications
-----
Modified: libgksu/branches/libgksu2/libgksuui/ChangeLog
===================================================================
--- libgksu/branches/libgksu2/libgksuui/ChangeLog 2006-01-24 13:06:18 UTC (rev 505)
+++ libgksu/branches/libgksu2/libgksuui/ChangeLog 2006-01-25 00:08:27 UTC (rev 506)
@@ -1,3 +1,9 @@
+2006-01-24 Gustavo Noronha Silva <kov at debian.org>
+
+ * gksuui-dialog.{c,h}:
+ - applied patch by Michael Vogt to report that capslock is enabled
+ with small modifications
+
2006-01-07 Gustavo Noronha Silva <kov at debian.org>
* Make it a sub, static library for libgksu only.
Modified: libgksu/branches/libgksu2/libgksuui/gksuui-dialog.c
===================================================================
--- libgksu/branches/libgksu2/libgksuui/gksuui-dialog.c 2006-01-24 13:06:18 UTC (rev 505)
+++ libgksu/branches/libgksu2/libgksuui/gksuui-dialog.c 2006-01-25 00:08:27 UTC (rev 506)
@@ -19,6 +19,8 @@
*/
#include <gtk/gtk.h>
+#include <gdk/gdkx.h>
+#include <X11/XKBlib.h>
#include "defines.h"
#include "../config.h"
@@ -63,6 +65,36 @@
{
}
+/**
+ * Helper that can detect if caps lock is pressed
+ */
+static gboolean
+is_capslock_on (void)
+{
+ XkbStateRec states;
+ Display *dsp;
+
+ dsp = GDK_DISPLAY ();
+ if (XkbGetState (dsp, XkbUseCoreKbd, &states) != Success)
+ return FALSE;
+
+ return (states.locked_mods & LockMask) != 0;
+}
+
+static gboolean
+verify_capslock_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
+{
+ GksuuiDialog *dialog = user_data;
+
+ if (is_capslock_on ())
+ gtk_widget_show (dialog->label_warn_capslock);
+ else
+ gtk_widget_hide (dialog->label_warn_capslock);
+
+ return FALSE;
+}
+
+
static void
gksuui_dialog_init (GksuuiDialog *gksuui_dialog)
{
@@ -152,6 +184,8 @@
/* entry */
gksuui_dialog->entry = gtk_entry_new();
+ g_signal_connect (G_OBJECT(gksuui_dialog->entry), "key-press-event",
+ G_CALLBACK(verify_capslock_cb), gksuui_dialog);
g_signal_connect_swapped (G_OBJECT(gksuui_dialog->entry), "activate",
G_CALLBACK(gtk_button_clicked),
gksuui_dialog->ok_button);
@@ -162,6 +196,19 @@
gtk_widget_show (gksuui_dialog->entry);
gtk_widget_grab_focus(gksuui_dialog->entry);
+ /* label capslock warning */
+ gksuui_dialog->label_warn_capslock = gtk_label_new (_("<b>You have capslock on</b>"));
+ gtk_label_set_justify (GTK_LABEL(gksuui_dialog->label_warn_capslock),
+ GTK_JUSTIFY_CENTER);
+ gtk_label_set_use_markup (GTK_LABEL(gksuui_dialog->label_warn_capslock), TRUE);
+ gtk_box_pack_start (GTK_BOX(gksuui_dialog->entry_vbox),
+ gksuui_dialog->label_warn_capslock, TRUE, TRUE, 0);
+
+ /* expose event */
+ g_signal_connect (G_OBJECT(gksuui_dialog), "focus-in-event",
+ G_CALLBACK(verify_capslock_cb), gksuui_dialog);
+
+
gtk_widget_pop_composite_child ();
}
Modified: libgksu/branches/libgksu2/libgksuui/gksuui-dialog.h
===================================================================
--- libgksu/branches/libgksu2/libgksuui/gksuui-dialog.h 2006-01-24 13:06:18 UTC (rev 505)
+++ libgksu/branches/libgksu2/libgksuui/gksuui-dialog.h 2006-01-25 00:08:27 UTC (rev 506)
@@ -64,6 +64,7 @@
GtkWidget *image;
GtkWidget *entry_vbox;
GtkWidget *label;
+ GtkWidget *label_warn_capslock;
GtkWidget *entry;
GtkWidget *ok_button;
GtkWidget *cancel_button;
More information about the gksu-commits
mailing list