diff options
Diffstat (limited to 'source/blender/editors/space_clip/clip_graph_ops.c')
-rw-r--r-- | source/blender/editors/space_clip/clip_graph_ops.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/source/blender/editors/space_clip/clip_graph_ops.c b/source/blender/editors/space_clip/clip_graph_ops.c index 2a2f15c94bb..e781d199d35 100644 --- a/source/blender/editors/space_clip/clip_graph_ops.c +++ b/source/blender/editors/space_clip/clip_graph_ops.c @@ -200,10 +200,18 @@ static bool mouse_select_knot(bContext *C, float co[2], bool extend) toggle_selection_cb); } - if (userdata.coord == 0) - userdata.marker->flag |= MARKER_GRAPH_SEL_X; - else - userdata.marker->flag |= MARKER_GRAPH_SEL_Y; + if (userdata.coord == 0) { + if (extend && (userdata.marker->flag & MARKER_GRAPH_SEL_X) != 0) + userdata.marker->flag &= ~MARKER_GRAPH_SEL_X; + else + userdata.marker->flag |= MARKER_GRAPH_SEL_X; + } + else { + if (extend && (userdata.marker->flag & MARKER_GRAPH_SEL_Y) != 0) + userdata.marker->flag &= ~MARKER_GRAPH_SEL_Y; + else + userdata.marker->flag |= MARKER_GRAPH_SEL_Y; + } return true; } @@ -238,10 +246,12 @@ static bool mouse_select_curve(bContext *C, float co[2], bool extend) else if (act_track != userdata.track) { SelectUserData selectdata = {SEL_DESELECT}; MovieTrackingObject *object = BKE_tracking_object_get_active(tracking); - ListBase *tracksbase = BKE_tracking_object_get_tracks(tracking, object); tracking->act_track = userdata.track; - BKE_tracking_track_select(tracksbase, userdata.track, TRACK_AREA_ALL, true); + if ((sc->flag & SC_SHOW_GRAPH_SEL_ONLY) == 0) { + ListBase *tracksbase = BKE_tracking_object_get_tracks(tracking, object); + BKE_tracking_track_select(tracksbase, userdata.track, TRACK_AREA_ALL, false); + } /* deselect all knots on newly selected curve */ clip_graph_tracking_iterate(sc, |