[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54581] trunk/blender/source/blender/ windowmanager/intern/wm_window.c: revert own commit r54450, this works on X11 but not in Windows and caused bug [#34255] ( which may be a bug in windows ghost?, not getting key release for modifiers ).

Campbell Barton ideasman42 at gmail.com
Fri Feb 15 14:30:30 CET 2013


Revision: 54581
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54581
Author:   campbellbarton
Date:     2013-02-15 13:30:30 +0000 (Fri, 15 Feb 2013)
Log Message:
-----------
revert own commit r54450, this works on X11 but not in Windows and caused bug [#34255] (which may be a bug in windows ghost?, not getting key release for modifiers).

Cross platform modifier keys on activating window better be handled at ghost level anyway.

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54450

Modified Paths:
--------------
    trunk/blender/source/blender/windowmanager/intern/wm_window.c

Modified: trunk/blender/source/blender/windowmanager/intern/wm_window.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_window.c	2013-02-15 12:57:11 UTC (rev 54580)
+++ trunk/blender/source/blender/windowmanager/intern/wm_window.c	2013-02-15 13:30:30 UTC (rev 54581)
@@ -756,7 +756,6 @@
 				GHOST_TEventKeyData kdata;
 				wmEvent event;
 				int wx, wy;
-				bool is_key;
 				
 				wm->winactive = win; /* no context change! c->wm->windrawable is drawable, or for area queues */
 				
@@ -764,23 +763,26 @@
 //				window_handle(win, INPUTCHANGE, win->active);
 				
 				/* bad ghost support for modifier keys... so on activate we set the modifiers again */
+
+				/* TODO: This is not correct since a modifier may be held when a window is activated...
+				 * better solve this at ghost level. attempted fix r54450 but it caused bug [#34255] */
 				kdata.ascii = '\0';
 				kdata.utf8_buf[0] = '\0';
-				if ((win->eventstate->shift != 0) != ((is_key = query_qual(SHIFT)) != 0)) {
+				if (win->eventstate->shift && !query_qual(SHIFT)) {
 					kdata.key = GHOST_kKeyLeftShift;
-					wm_event_add_ghostevent(wm, win, is_key ? GHOST_kEventKeyDown : GHOST_kEventKeyUp, time, &kdata);
+					wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata);
 				}
-				if ((win->eventstate->ctrl != 0) != ((is_key = query_qual(CONTROL)) != 0)) {
+				if (win->eventstate->ctrl && !query_qual(CONTROL)) {
 					kdata.key = GHOST_kKeyLeftControl;
-					wm_event_add_ghostevent(wm, win, is_key ? GHOST_kEventKeyDown : GHOST_kEventKeyUp, time, &kdata);
+					wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata);
 				}
-				if ((win->eventstate->alt != 0) != ((is_key = query_qual(ALT)) != 0)) {
+				if (win->eventstate->alt && !query_qual(ALT)) {
 					kdata.key = GHOST_kKeyLeftAlt;
-					wm_event_add_ghostevent(wm, win, is_key ? GHOST_kEventKeyDown : GHOST_kEventKeyUp, time, &kdata);
+					wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata);
 				}
-				if ((win->eventstate->oskey != 0) != ((is_key = query_qual(OS)) != 0)) {
+				if (win->eventstate->oskey && !query_qual(OS)) {
 					kdata.key = GHOST_kKeyOS;
-					wm_event_add_ghostevent(wm, win, is_key ? GHOST_kEventKeyDown : GHOST_kEventKeyUp, time, &kdata);
+					wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata);
 				}
 				/* keymodifier zero, it hangs on hotkeys that open windows otherwise */
 				win->eventstate->keymodifier = 0;




More information about the Bf-blender-cvs mailing list