[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24824] trunk/blender/source/blender: New CLICK event value.

Martin Poirier theeth at yahoo.com
Mon Nov 23 17:24:28 CET 2009


Revision: 24824
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24824
Author:   theeth
Date:     2009-11-23 17:24:28 +0100 (Mon, 23 Nov 2009)

Log Message:
-----------
New CLICK event value. If RELEASE is not handled and last event was PRESS of same type, redo handlers with CLICK value (this means you can "click" key events too).

Leftmouse+Ctrl to extrude now mapped to Click instead of Release. Release was used to avoid conflict with lasso, but it isn't safe with modal operators that use Press to confirm (subsequent Release then extruded). Click is semantically closer to what we want here.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/armature/armature_ops.c
    trunk/blender/source/blender/editors/curve/curve_ops.c
    trunk/blender/source/blender/editors/mesh/mesh_ops.c
    trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
    trunk/blender/source/blender/windowmanager/WM_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/editors/armature/armature_ops.c
===================================================================
--- trunk/blender/source/blender/editors/armature/armature_ops.c	2009-11-23 16:04:19 UTC (rev 24823)
+++ trunk/blender/source/blender/editors/armature/armature_ops.c	2009-11-23 16:24:28 UTC (rev 24824)
@@ -241,7 +241,7 @@
 	WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0);
 	WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_forked", EKEY, KM_PRESS, KM_SHIFT, 0);
-	WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
+	WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_CLICK, KM_CTRL, 0);
 	WM_keymap_add_item(keymap, "ARMATURE_OT_fill", FKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "ARMATURE_OT_merge", MKEY, KM_PRESS, KM_ALT, 0);
 	

Modified: trunk/blender/source/blender/editors/curve/curve_ops.c
===================================================================
--- trunk/blender/source/blender/editors/curve/curve_ops.c	2009-11-23 16:04:19 UTC (rev 24823)
+++ trunk/blender/source/blender/editors/curve/curve_ops.c	2009-11-23 16:24:28 UTC (rev 24824)
@@ -220,7 +220,7 @@
 	keymap->poll= ED_operator_editsurfcurve;
 	
 	WM_keymap_add_item(keymap, "OBJECT_OT_curve_add", AKEY, KM_PRESS, KM_SHIFT, 0);
-	WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0);
+	WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", LEFTMOUSE, KM_CLICK, KM_CTRL, 0);
 
 	WM_keymap_add_item(keymap, "CURVE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "CURVE_OT_select_row", RKEY, KM_PRESS, KM_SHIFT, 0);

Modified: trunk/blender/source/blender/editors/mesh/mesh_ops.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_ops.c	2009-11-23 16:04:19 UTC (rev 24823)
+++ trunk/blender/source/blender/editors/mesh/mesh_ops.c	2009-11-23 16:24:28 UTC (rev 24824)
@@ -284,10 +284,9 @@
 	
 	WM_keymap_add_item(keymap, "MESH_OT_separate", PKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "MESH_OT_split", YKEY, KM_PRESS, 0, 0);
-						/* use KM_RELEASE because same key is used for tweaks
-						 * TEMPORARY REMAP TO ALT+CTRL TO AVOID CONFLICT 
-						 * */
-	WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_RELEASE, KM_CTRL|KM_ALT, 0);
+
+	/* use KM_CLICK because same key is used for tweaks */
+	WM_keymap_add_item(keymap, "MESH_OT_dupli_extrude_cursor", LEFTMOUSE, KM_CLICK, KM_CTRL, 0);
 	
 	WM_keymap_add_item(keymap, "MESH_OT_delete", XKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "MESH_OT_delete", DELKEY, KM_PRESS, 0, 0);

Modified: trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-11-23 16:04:19 UTC (rev 24823)
+++ trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-11-23 16:24:28 UTC (rev 24824)
@@ -152,8 +152,10 @@
 	short cursor;		/* current mouse cursor type */
 	short lastcursor;	/* for temp waitcursor */
 	short addmousemove;	/* internal: tag this for extra mousemove event, makes cursors/buttons active on UI switching */
-	int pad3;
 	
+	short last_type; /* last event information, used for click */
+	short last_val;
+
 	struct wmEvent *eventstate;	/* storage for event system */
 	
 	struct wmSubWindow *curswin;	/* internal for wm_subwindow.c only */

Modified: trunk/blender/source/blender/windowmanager/WM_types.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_types.h	2009-11-23 16:04:19 UTC (rev 24823)
+++ trunk/blender/source/blender/windowmanager/WM_types.h	2009-11-23 16:24:28 UTC (rev 24824)
@@ -82,6 +82,7 @@
 #define KM_NOTHING	0
 #define KM_PRESS	1
 #define KM_RELEASE	2
+#define KM_CLICK	3
 
 
 /* ************** UI Handler ***************** */

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-11-23 16:04:19 UTC (rev 24823)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2009-11-23 16:24:28 UTC (rev 24824)
@@ -1153,6 +1153,22 @@
 		if(CTX_wm_window(C)==NULL)
 			break;
 	}
+
+	/* test for CLICK event */
+	if (event->val == KM_RELEASE && action == WM_HANDLER_CONTINUE) {
+		wmWindow *win = CTX_wm_window(C);
+
+		if (win && win->last_type == event->type && win->last_val == KM_PRESS) {
+			event->val = KM_CLICK;
+			action = wm_handlers_do(C, event, handlers);
+
+			/* revert value if not handled */
+			if (action == WM_HANDLER_CONTINUE) {
+				event->val = KM_RELEASE;
+			}
+		}
+	}
+
 	return action;
 }
 
@@ -1333,6 +1349,10 @@
 				}
 			}
 			
+			/* store last event for this window */
+			win->last_type = event->type;
+			win->last_val = event->val;
+
 			/* unlink and free here, blender-quit then frees all */
 			BLI_remlink(&win->queue, event);
 			wm_event_free(event);





More information about the Bf-blender-cvs mailing list