diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-10-14 12:36:27 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-10-14 12:36:27 +0400 |
commit | de724a258eda45d1fed2b2176006c3b2df8abea2 (patch) | |
tree | a472a24defdce561a27ed0b8780dbce91c279d05 /source/blender/editors/mask/mask_ops.c | |
parent | a4ba73311b4c2d862145f86ca078216b7ecbb56f (diff) | |
parent | c08e7e1dc0366c485dbea5ef1209f2cdb616fbb3 (diff) |
Merge branch 'master' into texture_nodes_refactor
Diffstat (limited to 'source/blender/editors/mask/mask_ops.c')
-rw-r--r-- | source/blender/editors/mask/mask_ops.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/source/blender/editors/mask/mask_ops.c b/source/blender/editors/mask/mask_ops.c index b27baaf22be..93e59f3244e 100644 --- a/source/blender/editors/mask/mask_ops.c +++ b/source/blender/editors/mask/mask_ops.c @@ -510,6 +510,7 @@ static bool spline_under_mouse_get(const bContext *C, MaskLayer **mask_layer_r, MaskSpline **mask_spline_r) { + const float threshold = 19.0f; ScrArea *sa = CTX_wm_area(C); SpaceClip *sc = CTX_wm_space_clip(C); MaskLayer *mask_layer; @@ -580,10 +581,18 @@ static bool spline_under_mouse_get(const bContext *C, } } } - /* TODO(sergey): Chech whether tessellated spline point is closer - * to the mouse than the spline center. - */ - if (closest_dist_squared < 32.0f * 32.0f && closest_spline != NULL) { + if (closest_dist_squared < SQUARE(threshold) && closest_spline != NULL) { + float diff_score; + if (ED_mask_find_nearest_diff_point(C, mask, co, threshold, + false, NULL, true, false, + NULL, NULL, NULL, NULL, + &diff_score)) + { + if (SQUARE(diff_score) < closest_dist_squared) { + return false; + } + } + *mask_layer_r = closest_layer; *mask_spline_r = closest_spline; return true; @@ -1167,7 +1176,7 @@ static bool slide_spline_curvature_check(bContext *C, const wmEvent *event) { Mask *mask = CTX_data_edit_mask(C); float co[2]; - const float threshold = 19; + const float threshold = 19.0f; ED_mask_mouse_pos(CTX_wm_area(C), CTX_wm_region(C), event->mval, co); @@ -1185,7 +1194,7 @@ static bool slide_spline_curvature_check(bContext *C, const wmEvent *event) static SlideSplineCurvatureData *slide_spline_curvature_customdata( bContext *C, const wmEvent *event) { - const float threshold = 19; + const float threshold = 19.0f; Mask *mask = CTX_data_edit_mask(C); SlideSplineCurvatureData *slide_data; @@ -1198,8 +1207,9 @@ static SlideSplineCurvatureData *slide_spline_curvature_customdata( ED_mask_mouse_pos(CTX_wm_area(C), CTX_wm_region(C), event->mval, co); if (!ED_mask_find_nearest_diff_point(C, mask, co, threshold, false, + NULL, true, false, &mask_layer, &spline, &point, &u, - NULL, true, false)) + NULL)) { return NULL; } |