[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54450] trunk/blender/source/blender/ windowmanager/intern/wm_window.c: fix for modifier keys held before a window was activated being ignored.
Campbell Barton
ideasman42 at gmail.com
Mon Feb 11 06:55:11 CET 2013
Revision: 54450
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54450
Author: campbellbarton
Date: 2013-02-11 05:55:11 +0000 (Mon, 11 Feb 2013)
Log Message:
-----------
fix for modifier keys held before a window was activated being ignored.
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-11 04:43:49 UTC (rev 54449)
+++ trunk/blender/source/blender/windowmanager/intern/wm_window.c 2013-02-11 05:55:11 UTC (rev 54450)
@@ -756,6 +756,7 @@
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 */
@@ -765,21 +766,21 @@
/* bad ghost support for modifier keys... so on activate we set the modifiers again */
kdata.ascii = '\0';
kdata.utf8_buf[0] = '\0';
- if (win->eventstate->shift && !query_qual(SHIFT)) {
+ if ((win->eventstate->shift != 0) != ((is_key = query_qual(SHIFT)) != 0)) {
kdata.key = GHOST_kKeyLeftShift;
- wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata);
+ wm_event_add_ghostevent(wm, win, is_key ? GHOST_kEventKeyDown : GHOST_kEventKeyUp, time, &kdata);
}
- if (win->eventstate->ctrl && !query_qual(CONTROL)) {
+ if ((win->eventstate->ctrl != 0) != ((is_key = query_qual(CONTROL)) != 0)) {
kdata.key = GHOST_kKeyLeftControl;
- wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata);
+ wm_event_add_ghostevent(wm, win, is_key ? GHOST_kEventKeyDown : GHOST_kEventKeyUp, time, &kdata);
}
- if (win->eventstate->alt && !query_qual(ALT)) {
+ if ((win->eventstate->alt != 0) != ((is_key = query_qual(ALT)) != 0)) {
kdata.key = GHOST_kKeyLeftAlt;
- wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata);
+ wm_event_add_ghostevent(wm, win, is_key ? GHOST_kEventKeyDown : GHOST_kEventKeyUp, time, &kdata);
}
- if (win->eventstate->oskey && !query_qual(OS)) {
+ if ((win->eventstate->oskey != 0) != ((is_key = query_qual(OS)) != 0)) {
kdata.key = GHOST_kKeyOS;
- wm_event_add_ghostevent(wm, win, GHOST_kEventKeyUp, time, &kdata);
+ wm_event_add_ghostevent(wm, win, is_key ? GHOST_kEventKeyDown : 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