forked from bartvdbraak/blender
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!
This commit is contained in:
parent
bbed6af857
commit
df4d25991e
@ -244,6 +244,8 @@ class SEQUENCER_MT_select(Menu):
|
|||||||
layout.separator()
|
layout.separator()
|
||||||
layout.operator_menu_enum("sequencer.select_grouped", "type", text="Grouped")
|
layout.operator_menu_enum("sequencer.select_grouped", "type", text="Grouped")
|
||||||
layout.operator("sequencer.select_linked")
|
layout.operator("sequencer.select_linked")
|
||||||
|
layout.operator("sequencer.select_less")
|
||||||
|
layout.operator("sequencer.select_more")
|
||||||
layout.operator("sequencer.select_all").action = 'TOGGLE'
|
layout.operator("sequencer.select_all").action = 'TOGGLE'
|
||||||
layout.operator("sequencer.select_all", text="Inverse").action = 'INVERT'
|
layout.operator("sequencer.select_all", text="Inverse").action = 'INVERT'
|
||||||
|
|
||||||
|
@ -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) {
|
for (seq = ed->seqbasep->first; seq; seq = seq->next) {
|
||||||
if ((int)(seq->flag & SELECT) == sel) {
|
if ((seq->flag & SELECT) == sel) {
|
||||||
if ((linked == 0 && seq->tmp) == 0) {
|
if (linked || (seq->tmp == NULL)) {
|
||||||
/* only get unselected nabours */
|
/* only get unselected neighbors */
|
||||||
neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_LEFT, isel);
|
neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_LEFT, isel);
|
||||||
if (neighbor) {
|
if (neighbor) {
|
||||||
if (sel) { neighbor->flag |= SELECT; recurs_sel_seq(neighbor); }
|
if (sel) {
|
||||||
else neighbor->flag &= ~SELECT;
|
neighbor->flag |= SELECT;
|
||||||
if (linked == 0) neighbor->tmp = (Sequence *)1;
|
recurs_sel_seq(neighbor);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
neighbor->flag &= ~SELECT;
|
||||||
|
}
|
||||||
|
if (!linked) {
|
||||||
|
neighbor->tmp = (Sequence *)1;
|
||||||
|
}
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_RIGHT, isel);
|
neighbor = find_neighboring_sequence(scene, seq, SEQ_SIDE_RIGHT, isel);
|
||||||
if (neighbor) {
|
if (neighbor) {
|
||||||
if (sel) { neighbor->flag |= SELECT; recurs_sel_seq(neighbor); }
|
if (sel) {
|
||||||
else neighbor->flag &= ~SELECT;
|
neighbor->flag |= SELECT;
|
||||||
if (linked == 0) neighbor->tmp = (void *)1;
|
recurs_sel_seq(neighbor);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
neighbor->flag &= ~SELECT;
|
||||||
|
}
|
||||||
|
if (!linked) {
|
||||||
|
neighbor->tmp = (Sequence *)1;
|
||||||
|
}
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -615,7 +629,7 @@ static int sequencer_select_more_exec(bContext *C, wmOperator *UNUSED(op))
|
|||||||
{
|
{
|
||||||
Scene *scene = CTX_data_scene(C);
|
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;
|
return OPERATOR_CANCELLED;
|
||||||
|
|
||||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER | NA_SELECTED, scene);
|
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);
|
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;
|
return OPERATOR_CANCELLED;
|
||||||
|
|
||||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER | NA_SELECTED, scene);
|
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER | NA_SELECTED, scene);
|
||||||
|
Loading…
Reference in New Issue
Block a user