diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2015-07-18 12:55:08 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2015-07-18 12:55:08 +0300 |
commit | df4d25991effad358c571214466a35723d50f23e (patch) | |
tree | 0197b2a0eb3e81f1d965428005e40e1f0d04402a /source/blender/editors/space_sequencer | |
parent | bbed6af857ed7a688b1443396dceb7c0a2d573c5 (diff) |
Fix (IRC reported) inverted behavior of select more/less in VSE.
Also, cleaned up a bit that code, and added releavnt entries in Select menu.
Reported on IRC by Leon Cheung, thanks!
Diffstat (limited to 'source/blender/editors/space_sequencer')
-rw-r--r-- | source/blender/editors/space_sequencer/sequencer_select.c | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index 2100c97079e..67d76054538 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -584,21 +584,35 @@ static bool select_more_less_seq__internal(Scene *scene, bool sel, const bool li } for (seq = ed->seqbasep->first; seq; seq = seq->next) { - if ((int)(seq->flag & SELECT) == sel) { - if ((linked == 0 && seq->tmp) == 0) { - /* only get unselected nabours */ + if ((seq->flag & SELECT) == sel) { + if (linked || (seq->tmp == NULL)) { + /* only get unselected neighbors */ neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_LEFT, isel); if (neighbor) { - if (sel) { neighbor->flag |= SELECT; recurs_sel_seq(neighbor); } - else neighbor->flag &= ~SELECT; - if (linked == 0) neighbor->tmp = (Sequence *)1; + if (sel) { + neighbor->flag |= SELECT; + recurs_sel_seq(neighbor); + } + else { + neighbor->flag &= ~SELECT; + } + if (!linked) { + neighbor->tmp = (Sequence *)1; + } changed = true; } neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_RIGHT, isel); if (neighbor) { - if (sel) { neighbor->flag |= SELECT; recurs_sel_seq(neighbor); } - else neighbor->flag &= ~SELECT; - if (linked == 0) neighbor->tmp = (void *)1; + if (sel) { + neighbor->flag |= SELECT; + recurs_sel_seq(neighbor); + } + else { + neighbor->flag &= ~SELECT; + } + if (!linked) { + neighbor->tmp = (Sequence *)1; + } changed = true; } } @@ -615,7 +629,7 @@ static int sequencer_select_more_exec(bContext *C, wmOperator *UNUSED(op)) { Scene *scene = CTX_data_scene(C); - if (!select_more_less_seq__internal(scene, 0, 0)) + if (!select_more_less_seq__internal(scene, true, false)) return OPERATOR_CANCELLED; WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER | NA_SELECTED, scene); @@ -646,7 +660,7 @@ static int sequencer_select_less_exec(bContext *C, wmOperator *UNUSED(op)) { Scene *scene = CTX_data_scene(C); - if (!select_more_less_seq__internal(scene, 1, 0)) + if (!select_more_less_seq__internal(scene, false, false)) return OPERATOR_CANCELLED; WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER | NA_SELECTED, scene); |