[Bf-blender-cvs] [df4d259] master: Fix (IRC reported) inverted behavior of select more/less in VSE.

Bastien Montagne noreply at git.blender.org
Sat Jul 18 11:56:48 CEST 2015


Commit: df4d25991effad358c571214466a35723d50f23e
Author: Bastien Montagne
Date:   Sat Jul 18 11:55:08 2015 +0200
Branches: master
https://developer.blender.org/rBdf4d25991effad358c571214466a35723d50f23e

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!

===================================================================

M	release/scripts/startup/bl_ui/space_sequencer.py
M	source/blender/editors/space_sequencer/sequencer_select.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 5379d5b..a3066cb 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -244,6 +244,8 @@ class SEQUENCER_MT_select(Menu):
         layout.separator()
         layout.operator_menu_enum("sequencer.select_grouped", "type", text="Grouped")
         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", text="Inverse").action = 'INVERT'
 
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c
index 2100c97..67d7605 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);




More information about the Bf-blender-cvs mailing list