diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-03-31 12:46:30 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-03-31 13:00:40 +0400 |
commit | f06a1b77e291c595f3928d952cc9f18c04df3ae2 (patch) | |
tree | df43d5e4ca40a1e3f6e622272a513d86073b4655 /source | |
parent | 6316306cc07c77d4cf6fff52bc8a35ba102b8f56 (diff) |
Maksing: fix issue when it's not possible to drag right handle of aligned handles
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/mask/mask_ops.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/source/blender/editors/mask/mask_ops.c b/source/blender/editors/mask/mask_ops.c index e8cd97d8d6a..d170d009af6 100644 --- a/source/blender/editors/mask/mask_ops.c +++ b/source/blender/editors/mask/mask_ops.c @@ -503,10 +503,27 @@ static bool slide_point_check_initial_feather(MaskSpline *spline) } static void select_sliding_point(Mask *mask, MaskLayer *mask_layer, MaskSpline *spline, - MaskSplinePoint *point) + MaskSplinePoint *point, eMaskWhichHandle which_handle) { ED_mask_select_toggle_all(mask, SEL_DESELECT); - BKE_mask_point_select_set(point, TRUE); + + switch (which_handle) { + case MASK_WHICH_HANDLE_NONE: + BKE_mask_point_select_set(point, TRUE); + break; + case MASK_WHICH_HANDLE_LEFT: + point->bezt.f1 |= SELECT; + break; + case MASK_WHICH_HANDLE_RIGHT: + point->bezt.f3 |= SELECT; + break; + case MASK_WHICH_HANDLE_STICK: + point->bezt.f1 |= SELECT; + point->bezt.f3 |= SELECT; + break; + default: + BLI_assert(!"Unexpected situation in select_sliding_point()"); + } mask_layer->act_spline = spline; mask_layer->act_point = point; @@ -581,7 +598,7 @@ static void *slide_point_customdata(bContext *C, wmOperator *op, const wmEvent * } if (action != SLIDE_ACTION_NONE) { - select_sliding_point(mask, masklay, spline, point); + select_sliding_point(mask, masklay, spline, point, which_handle); customdata = MEM_callocN(sizeof(SlidePointData), "mask slide point data"); |