[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56241] trunk/blender/source/blender/ editors/space_view3d/view3d_ruler.c: fix for issues with ruler
Campbell Barton
ideasman42 at gmail.com
Tue Apr 23 16:58:32 CEST 2013
Revision: 56241
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56241
Author: campbellbarton
Date: 2013-04-23 14:58:23 +0000 (Tue, 23 Apr 2013)
Log Message:
-----------
fix for issues with ruler
- disabling ruler snap wasn't setting the points depth back to its previous value before snapping.
- adding a new ruler uses the depth of the previous active ruler (fallback to view center as before)
- deleting the ruler now sets the prev/next ruler active.
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-04-23 14:12:12 UTC (rev 56240)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_ruler.c 2013-04-23 14:58:23 UTC (rev 56241)
@@ -156,6 +156,7 @@
int flag;
int snap_flag;
int state;
+ float drag_start_co[3];
/* --- */
ARegion *ar;
@@ -675,6 +676,8 @@
if (ruler_item) {
float *co = ruler_item->co[ruler_item->co_index];
+ /* restore the initial depth */
+ copy_v3_v3(co, ruler_info->drag_start_co);
view3d_ruler_item_project(ruler_info, co, mval);
if (do_thickness && ruler_item->co_index != 1) {
const float mval_fl[2] = {UNPACK2(mval)};
@@ -793,6 +796,7 @@
(ruler_info->items.first == NULL))
{
/* Create new line */
+ RulerItem *ruler_item_prev = ruler_item_active_get(ruler_info);
RulerItem *ruler_item;
/* check if we want to drag an existing point or add a new one */
ruler_info->state = RULER_STATE_DRAG;
@@ -800,7 +804,15 @@
ruler_item = ruler_item_add(ruler_info);
ruler_item_active_set(ruler_info, ruler_item);
- negate_v3_v3(ruler_item->co[0], rv3d->ofs);
+ /* initial depth either previous ruler, view offset */
+ if (ruler_item_prev) {
+ copy_v3_v3(ruler_info->drag_start_co, ruler_item_prev->co[ruler_item_prev->co_index]);
+ }
+ else {
+ negate_v3_v3(ruler_info->drag_start_co, rv3d->ofs);
+ }
+
+ copy_v3_v3(ruler_item->co[0], ruler_info->drag_start_co);
view3d_ruler_item_project(ruler_info, ruler_item->co[0], event->mval);
copy_v3_v3(ruler_item->co[2], ruler_item->co[0]);
@@ -849,6 +861,10 @@
ruler_item_active_set(ruler_info, ruler_item_pick);
ruler_item_pick->co_index = co_index;
ruler_info->state = RULER_STATE_DRAG;
+
+ /* store the initial depth */
+ copy_v3_v3(ruler_info->drag_start_co, ruler_item_pick->co[ruler_item_pick->co_index]);
+
do_draw = true;
}
}
@@ -911,8 +927,9 @@
if (ruler_info->state == RULER_STATE_NORMAL) {
RulerItem *ruler_item = ruler_item_active_get(ruler_info);
if (ruler_item) {
+ RulerItem *ruler_item_other = ruler_item->prev ? ruler_item->prev : ruler_item->next;
ruler_item_remove(ruler_info, ruler_item);
- ruler_info->item_active = -1;
+ ruler_item_active_set(ruler_info, ruler_item_other);
do_draw = true;
}
}
More information about the Bf-blender-cvs
mailing list