[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55160] trunk/blender/source/blender/ editors/space_view3d/view3d_ruler.c: ruler:

Campbell Barton ideasman42 at gmail.com
Sun Mar 10 12:51:58 CET 2013


Revision: 55160
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55160
Author:   campbellbarton
Date:     2013-03-10 11:51:58 +0000 (Sun, 10 Mar 2013)
Log Message:
-----------
ruler:
- initial ruler point snaps by default now.
- header text drawing was delayed until the first point was added.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_ruler.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_ruler.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_ruler.c	2013-03-10 11:42:46 UTC (rev 55159)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_ruler.c	2013-03-10 11:51:58 UTC (rev 55160)
@@ -682,15 +682,15 @@
 }
 
 /* use for mousemove events */
-static bool view3d_ruler_item_mousemove(bContext *C, RulerInfo *ruler_info, const wmEvent *event)
+static bool view3d_ruler_item_mousemove(bContext *C, RulerInfo *ruler_info, const int mval[2], const bool do_snap)
 {
 	RulerItem *ruler_item = ruler_item_active_get(ruler_info);
 
 	if (ruler_item) {
 		float *co = ruler_item->co[ruler_item->co_index];
-		view3d_ruler_item_project(ruler_info, co, event->mval);
-		if (event->ctrl) {
-			const float mval_fl[2] = {UNPACK2(event->mval)};
+		view3d_ruler_item_project(ruler_info, co, mval);
+		if (do_snap) {
+			const float mval_fl[2] = {UNPACK2(mval)};
 			ED_view3d_snap_co(C, co, mval_fl, true, true, true);
 		}
 		return true;
@@ -700,11 +700,24 @@
 	}
 }
 
+static void view3d_ruler_header_update(ScrArea *sa)
+{
+	const char *text = "Ctrl+LMB: Add, "
+	                   "Del: Remove, "
+	                   "Ctrl+Drag: Snap, "
+	                   "Ctrl+C: Copy Value, "
+	                   "Enter: Store,  "
+	                   "Esc: Cancel";
+
+	ED_area_headerprint(sa, text);
+}
+
 /* -------------------------------------------------------------------- */
 /* Operator callbacks */
 
 static int view3d_ruler_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
+	ScrArea *sa = CTX_wm_area(C);
 	ARegion *ar = CTX_wm_region(C);
 //	RegionView3D *rv3d = CTX_wm_region_view3d(C);
 	RulerInfo *ruler_info;
@@ -721,6 +734,8 @@
 	ruler_info->ar = ar;
 	ruler_info->draw_handle_pixel = ED_region_draw_cb_activate(ar->type, ruler_info_draw_pixel, ruler_info, REGION_DRAW_POST_PIXEL);
 
+	view3d_ruler_header_update(sa);
+
 	WM_event_add_modal_handler(C, op);
 
 	return OPERATOR_RUNNING_MODAL;
@@ -776,12 +791,19 @@
 
 						ruler_item = ruler_item_add(ruler_info);
 						ruler_item_active_set(ruler_info, ruler_item);
-						ruler_item->co_index = 2;
 
 						negate_v3_v3(ruler_item->co[0], rv3d->ofs);
 						view3d_ruler_item_project(ruler_info, ruler_item->co[0], event->mval);
 						copy_v3_v3(ruler_item->co[2], ruler_item->co[0]);
 
+						/* snap the first point added, not essential but handy */
+						{
+							ruler_item->co_index = 0;
+							view3d_ruler_item_mousemove(C, ruler_info, event->mval, true);
+						}
+
+						ruler_item->co_index = 2;
+
 						do_draw = true;
 					}
 					else {
@@ -816,7 +838,7 @@
 									}
 
 									/* update the new location */
-									view3d_ruler_item_mousemove(C, ruler_info, event);
+									view3d_ruler_item_mousemove(C, ruler_info, event->mval, event->ctrl != 0);
 									do_draw = true;
 								}
 							}
@@ -859,7 +881,7 @@
 		case MOUSEMOVE:
 		{
 			if (ruler_info->state == RULER_STATE_DRAG) {
-				if (view3d_ruler_item_mousemove(C, ruler_info, event)) {
+				if (view3d_ruler_item_mousemove(C, ruler_info, event->mval, event->ctrl != 0)) {
 					do_draw = true;
 				}
 			}
@@ -900,15 +922,8 @@
 
 	if (do_draw) {
 		ScrArea *sa = CTX_wm_area(C);
-		const char *text = "Ctrl+LMB: Add, "
-		                   "Del: Remove, "
-		                   "Ctrl+Drag: Snap, "
-		                   "Ctrl+C: Copy Value, "
-		                   "Enter: Store,  "
-		                   "Esc: Cancel";
 
-		// ED_region_tag_redraw(ar);
-		ED_area_headerprint(sa, text);
+		view3d_ruler_header_update(sa);
 
 		/* all 3d views draw rulers */
 		WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, NULL);




More information about the Bf-blender-cvs mailing list