[Bf-blender-cvs] [7d9bbf1] GPencil_Editing_Stage3: Fixes for using tablet events in keymap

Joshua Leung noreply at git.blender.org
Sat Oct 10 14:42:40 CEST 2015


Commit: 7d9bbf1b781487ddf42cee3aec0f2a42d84fc4bf
Author: Joshua Leung
Date:   Sun Oct 11 01:42:11 2015 +1300
Branches: GPencil_Editing_Stage3
https://developer.blender.org/rB7d9bbf1b781487ddf42cee3aec0f2a42d84fc4bf

Fixes for using tablet events in keymap

* Need to classify tablet events as being in the "mouse" category, or else attempts
  to add a new keymap item for this will fail by reverting to keyboard input

* Made event matching more restrictive - it will now trigger only on a tablet events
  for LEFTMOUSE events. The problem was that, even when hovering over the tablet
  and pressing a key, you'd still get an event with tablet data, which meant that
  that event would get wrongly caught and handled.

===================================================================

M	source/blender/windowmanager/intern/wm_event_system.c
M	source/blender/windowmanager/intern/wm_keymap.c

===================================================================

diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 58b3033..b307a87 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -1544,6 +1544,8 @@ static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi)
 			
 			if (wmtab == NULL)
 				return 0;
+			else if (winevent->type != LEFTMOUSE) /* tablet events can occur on hover + keypress */
+				return 0;
 			else if ((kmitype == TABLET_STYLUS) && (wmtab->Active != EVT_TABLET_STYLUS))
 				return 0;
 			else if ((kmitype == TABLET_ERASER) && (wmtab->Active != EVT_TABLET_ERASER))
diff --git a/source/blender/windowmanager/intern/wm_keymap.c b/source/blender/windowmanager/intern/wm_keymap.c
index 016583e..1ca4741 100644
--- a/source/blender/windowmanager/intern/wm_keymap.c
+++ b/source/blender/windowmanager/intern/wm_keymap.c
@@ -202,6 +202,9 @@ int WM_keymap_map_type_get(wmKeyMapItem *kmi)
 	if (kmi->type == KM_TEXTINPUT) {
 		return KMI_TYPE_TEXTINPUT;
 	}
+	if (ELEM(kmi->type, TABLET_STYLUS, TABLET_ERASER)) {
+		return KMI_TYPE_MOUSE;
+	}
 	return KMI_TYPE_KEYBOARD;
 }




More information about the Bf-blender-cvs mailing list