Agar-SVN | 3 Jul 03:07
Favicon

Agar: r8211 - trunk/gui

Author: vedge
Date: 2009-07-02 22:07:15 -0300 (Thu, 02 Jul 2009)
New Revision: 8211

Modified:
   trunk/gui/AG_Window.3
   trunk/gui/window.c
   trunk/gui/window.h
Log:
+ AG_WINDOW_MODKEYEVENTS flag

Modified: trunk/gui/AG_Window.3
===================================================================
--- trunk/gui/AG_Window.3	2009-07-01 02:18:04 UTC (rev 8210)
+++ trunk/gui/AG_Window.3	2009-07-03 01:07:15 UTC (rev 8211)
@@ -567,6 +567,9 @@
 User is not allowed to move the window.
 .It AG_WINDOW_NOCLIPPING
 Disable the clipping rectangle over the window area (enabled by default)..
+.It AG_WINDOW_MODKEYEVENTS
+Deliver discrete events to widget when modifier keys (CTRL, ALT, SHIFT)
+are pressed.
 .El
 .Sh EVENTS
 The

Modified: trunk/gui/window.c
===================================================================
--- trunk/gui/window.c	2009-07-01 02:18:04 UTC (rev 8210)
+++ trunk/gui/window.c	2009-07-03 01:07:15 UTC (rev 8211)
@@ -1026,18 +1026,19 @@
 				    (int)ev->key.keysym.unicode);
 				break;
 			}
-			switch (ev->key.keysym.sym) {		/* XXX */
-			case SDLK_LSHIFT:
-			case SDLK_RSHIFT:
-			case SDLK_LALT:
-			case SDLK_RALT:
-			case SDLK_LCTRL:
-			case SDLK_RCTRL:
-				/* Always ignore modifiers */
-				AG_ObjectUnlock(win);
-				return (0);
-			default:
-				break;
+			if (!(win->flags & AG_WINDOW_MODKEYEVENTS)) {
+				switch (ev->key.keysym.sym) {
+				case SDLK_LSHIFT:
+				case SDLK_RSHIFT:
+				case SDLK_LALT:
+				case SDLK_RALT:
+				case SDLK_LCTRL:
+				case SDLK_RCTRL:
+					AG_ObjectUnlock(win);
+					return (0);
+				default:
+					break;
+				}
 			}
 			tabCycle = 1;
 			if (AG_WindowIsFocused(win) &&

Modified: trunk/gui/window.h
===================================================================
--- trunk/gui/window.h	2009-07-01 02:18:04 UTC (rev 8210)
+++ trunk/gui/window.h	2009-07-03 01:07:15 UTC (rev 8211)
@@ -69,6 +69,8 @@
 #define AG_WINDOW_VMAXIMIZE	0x080000 /* Keep maximized vertically */
 #define AG_WINDOW_NOMOVE	0x100000 /* Disallow movement of window */
 #define AG_WINDOW_NOCLIPPING	0x200000 /* Don't set a clipping rectangle over the window area */
+#define AG_WINDOW_MODKEYEVENTS	0x400000 /* Generate key{up,down} events for
+                                            keypresses on modifier keys */

 #define AG_WINDOW_NORESIZE	(AG_WINDOW_NOHRESIZE|AG_WINDOW_NOVRESIZE)
 #define AG_WINDOW_NOBUTTONS	(AG_WINDOW_NOCLOSE|AG_WINDOW_NOMINIMIZE|\

Gmane