[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25779] trunk/blender/source/blender/ editors: 2 small view navigation features stolen from other apps :)

Matt Ebb matt at mke3.net
Wed Jan 6 13:22:59 CET 2010


Revision: 25779
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25779
Author:   broken
Date:     2010-01-06 13:22:59 +0100 (Wed, 06 Jan 2010)

Log Message:
-----------
2 small view navigation features stolen from other apps :)

* Now, while rotating a 3D view with MMB held down, you can hold shift to switch to Pan or ctrl to switch to Zoom, without having to let go of MMB. While it sounds simple it makes things really smooth to use and eases repeated presses of MMB. One thing I liked from Max. It's also in the modal key maps, so you can change it to whatever you like.

* A similar thing, when panning a 2D View, you can hold LMB to switch to zoom, effectively making MMB+LMB zoom. This is not very useful on a mouse, but it's very nice for tablet use, being able to navigate with one hand (side switch+stylus press) very easily. This one's from Fusion.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/view2d_ops.c
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c

Modified: trunk/blender/source/blender/editors/interface/view2d_ops.c
===================================================================
--- trunk/blender/source/blender/editors/interface/view2d_ops.c	2010-01-06 12:19:46 UTC (rev 25778)
+++ trunk/blender/source/blender/editors/interface/view2d_ops.c	2010-01-06 12:22:59 UTC (rev 25779)
@@ -236,6 +236,18 @@
 			break;
 			
 		case LEFTMOUSE:
+			/* switch to zoom */
+			if (event->val==KM_PRESS) {
+				/* calculate overall delta mouse-movement for redo */
+				RNA_int_set(op->ptr, "deltax", (vpd->startx - vpd->lastx));
+				RNA_int_set(op->ptr, "deltay", (vpd->starty - vpd->lasty));
+				
+				view_pan_exit(C, op);
+				WM_cursor_restore(CTX_wm_window(C));
+				
+				WM_operator_name_call(C, "VIEW2D_OT_zoom", WM_OP_INVOKE_DEFAULT, NULL);
+				return OPERATOR_FINISHED;
+			}
 		case MIDDLEMOUSE:
 		case ESCKEY:
 			if (event->val==KM_RELEASE) {

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2010-01-06 12:19:46 UTC (rev 25778)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2010-01-06 12:22:59 UTC (rev 25779)
@@ -445,8 +445,10 @@
 #define VIEW_MODAL_CONFIRM				1 /* used for all view operations */
 #define VIEWROT_MODAL_AXIS_SNAP_ENABLE	2
 #define VIEWROT_MODAL_AXIS_SNAP_DISABLE	3
+#define VIEWROT_MODAL_SWITCH_ZOOM		4
+#define VIEWROT_MODAL_SWITCH_MOVE		5
+#define VIEWROT_MODAL_SWITCH_ROTATE		6
 
-
 /* called in transform_ops.c, on each regeneration of keymaps  */
 void viewrotate_modal_keymap(wmKeyConfig *keyconf)
 {
@@ -455,6 +457,9 @@
 
 	{VIEWROT_MODAL_AXIS_SNAP_ENABLE,	"AXIS_SNAP_ENABLE", 0, "Enable Axis Snap", ""},
 	{VIEWROT_MODAL_AXIS_SNAP_DISABLE,	"AXIS_SNAP_DISABLE", 0, "Enable Axis Snap", ""},
+		
+	{VIEWROT_MODAL_SWITCH_ZOOM, "SWITCH_TO_ZOOM", 0, "Switch to Zoom"},
+	{VIEWROT_MODAL_SWITCH_MOVE, "SWITCH_TO_MOVE", 0, "Switch to Move"},
 
 	{0, NULL, 0, NULL, NULL}};
 
@@ -469,9 +474,13 @@
 	WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM);
 	WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM);
 
-	WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_ENABLE);
-	WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_DISABLE);
+	WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_ENABLE);
+	WM_modalkeymap_add_item(keymap, LEFTALTKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_AXIS_SNAP_DISABLE);
 
+	WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM);
+	WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM);
+	WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_MOVE);
+	
 	/* assign map to operators */
 	WM_modalkeymap_assign(keymap, "VIEW3D_OT_rotate");
 
@@ -633,6 +642,14 @@
 				vod->axis_snap= FALSE;
 				event_code= VIEW_APPLY;
 				break;
+			case VIEWROT_MODAL_SWITCH_ZOOM:
+				WM_operator_name_call(C, "VIEW3D_OT_zoom", WM_OP_INVOKE_DEFAULT, NULL);
+				event_code= VIEW_CONFIRM;
+				break;
+			case VIEWROT_MODAL_SWITCH_MOVE:
+				WM_operator_name_call(C, "VIEW3D_OT_move", WM_OP_INVOKE_DEFAULT, NULL);
+				event_code= VIEW_CONFIRM;
+				break;
 		}
 	}
 	else if(event->type==vod->origkey && event->val==KM_RELEASE) {
@@ -736,6 +753,10 @@
 	WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM);
 	WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM);
 
+	WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM);
+	WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ZOOM);
+	WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE);
+	
 	/* assign map to operators */
 	WM_modalkeymap_assign(keymap, "VIEW3D_OT_move");
 }
@@ -784,6 +805,14 @@
 			case VIEW_MODAL_CONFIRM:
 				event_code= VIEW_CONFIRM;
 				break;
+			case VIEWROT_MODAL_SWITCH_ZOOM:
+				WM_operator_name_call(C, "VIEW3D_OT_zoom", WM_OP_INVOKE_DEFAULT, NULL);
+				event_code= VIEW_CONFIRM;
+				break;
+			case VIEWROT_MODAL_SWITCH_ROTATE:
+				WM_operator_name_call(C, "VIEW3D_OT_rotate", WM_OP_INVOKE_DEFAULT, NULL);
+				event_code= VIEW_CONFIRM;
+				break;
 		}
 	}
 	else if(event->type==vod->origkey && event->val==KM_RELEASE) {
@@ -854,6 +883,10 @@
 	WM_modalkeymap_add_item(keymap, MIDDLEMOUSE, KM_RELEASE, KM_ANY, 0, VIEW_MODAL_CONFIRM);
 	WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, VIEW_MODAL_CONFIRM);
 
+	WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE);
+	WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, VIEWROT_MODAL_SWITCH_ROTATE);
+	WM_modalkeymap_add_item(keymap, LEFTSHIFTKEY, KM_PRESS, KM_ANY, 0, VIEWROT_MODAL_SWITCH_MOVE);
+	
 	/* assign map to operators */
 	WM_modalkeymap_assign(keymap, "VIEW3D_OT_zoom");
 }
@@ -995,6 +1028,14 @@
 			case VIEW_MODAL_CONFIRM:
 				event_code= VIEW_CONFIRM;
 				break;
+			case VIEWROT_MODAL_SWITCH_MOVE:
+				WM_operator_name_call(C, "VIEW3D_OT_move", WM_OP_INVOKE_DEFAULT, NULL);
+				event_code= VIEW_CONFIRM;
+				break;
+			case VIEWROT_MODAL_SWITCH_ROTATE:
+				WM_operator_name_call(C, "VIEW3D_OT_rotate", WM_OP_INVOKE_DEFAULT, NULL);
+				event_code= VIEW_CONFIRM;
+				break;
 		}
 	}
 	else if(event->type==vod->origkey && event->val==KM_RELEASE) {





More information about the Bf-blender-cvs mailing list