[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18984] branches/blender2.5/blender/source /blender/editors/space_sequencer: added back sequencer RMB select Ctrl/ Alt modifier keys.

Campbell Barton ideasman42 at gmail.com
Sun Feb 15 18:24:11 CET 2009


Revision: 18984
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18984
Author:   campbellbarton
Date:     2009-02-15 18:24:09 +0100 (Sun, 15 Feb 2009)

Log Message:
-----------
added back sequencer RMB select Ctrl/Alt modifier keys.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_intern.h
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c
    branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_select.c

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2009-02-15 14:02:27 UTC (rev 18983)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2009-02-15 17:24:09 UTC (rev 18984)
@@ -255,51 +255,45 @@
 	/* choose the side based on which side of the playhead the mouse is on */
 	UI_view2d_region_to_view(v2d, mval[0], mval[1], &mouseloc[0], &mouseloc[1]);
 	
-	return mouseloc[0] > frame;
+	return mouseloc[0] > frame ? SEQ_SIDE_RIGHT : SEQ_SIDE_LEFT;
 }
 
 
 Sequence *find_neighboring_sequence(Scene *scene, Sequence *test, int lr, int sel) 
 {
-/*	looks to the left on lr==1, to the right on lr==2
-	sel - 0==unselected, 1==selected, -1==done care*/
+	/* sel - 0==unselected, 1==selected, -1==done care*/
 	Sequence *seq;
 	Editing *ed= seq_give_editing(scene, FALSE);
 
-	
 	if(ed==NULL) return NULL;
 
 	if (sel>0) sel = SELECT;
 	
-	seq= ed->seqbasep->first;
-	while(seq) {
+	for(seq= ed->seqbasep->first; seq; seq= seq->next) {
 		if(	(seq!=test) &&
 			(test->machine==seq->machine) &&
-			(test->depth==seq->depth) && 
 			((sel == -1) || (sel && (seq->flag & SELECT)) || (sel==0 && (seq->flag & SELECT)==0)  ))
 		{
 			switch (lr) {
-			case 1:
+			case SEQ_SIDE_LEFT:
 				if (test->startdisp == (seq->enddisp)) {
 					return seq;
 				}
 				break;
-			case 2:
+			case SEQ_SIDE_RIGHT:
 				if (test->enddisp == (seq->startdisp)) {
 					return seq;
 				}
 				break;
 			}
 		}
-		seq= seq->next;
 	}
 	return NULL;
 }
 
 Sequence *find_next_prev_sequence(Scene *scene, Sequence *test, int lr, int sel) 
 {
-/*	looks to the left on lr==1, to the right on lr==2
-	sel - 0==unselected, 1==selected, -1==done care*/
+	/* sel - 0==unselected, 1==selected, -1==done care*/
 	Sequence *seq,*best_seq = NULL;
 	Editing *ed= seq_give_editing(scene, FALSE);
 	
@@ -321,12 +315,12 @@
 			dist = MAXFRAME*2;
 			
 			switch (lr) {
-			case 1:
+			case SEQ_SIDE_LEFT:
 				if (seq->enddisp <= test->startdisp) {
 					dist = test->enddisp - seq->startdisp;
 				}
 				break;
-			case 2:
+			case SEQ_SIDE_RIGHT:
 				if (seq->startdisp >= test->enddisp) {
 					dist = seq->startdisp - test->enddisp;
 				}
@@ -355,7 +349,7 @@
 	float pixelx;
 	float handsize;
 	float displen;
-	*hand= 0;
+	*hand= SEQ_SIDE_NONE;
 
 	
 	if(ed==NULL) return NULL;
@@ -390,9 +384,9 @@
 						}
 						
 						if( handsize+seq->startdisp >=x )
-							*hand= 1;
+							*hand= SEQ_SIDE_LEFT;
 						else if( -handsize+seq->enddisp <=x )
-							*hand= 2;
+							*hand= SEQ_SIDE_RIGHT;
 					}
 				}
 				return seq;

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_intern.h	2009-02-15 14:02:27 UTC (rev 18983)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_intern.h	2009-02-15 17:24:09 UTC (rev 18984)
@@ -110,6 +110,7 @@
 
 /* RNA enums, just to be more readable */
 enum {
+	SEQ_SIDE_NONE=0,
     SEQ_SIDE_LEFT,
     SEQ_SIDE_RIGHT,
 	SEQ_SIDE_BOTH,

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c	2009-02-15 14:02:27 UTC (rev 18983)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_ops.c	2009-02-15 17:24:09 UTC (rev 18984)
@@ -105,6 +105,7 @@
 void sequencer_keymap(wmWindowManager *wm)
 {
 	ListBase *keymap= WM_keymap_listbase(wm, "Sequencer", SPACE_SEQ, 0);
+	wmKeymapItem *kmi;
 	
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_deselect_all", AKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_select_invert", IKEY, KM_PRESS, KM_CTRL, 0);
@@ -138,15 +139,37 @@
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0);
 
-	
+
+	/* Mouse selection, a bit verbose :/ */
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
-	RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "type", 1);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", 1);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "linked_left", 1);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "linked_right", 1);
 	
+	kmi= WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL|KM_ALT, 0);
+	RNA_boolean_set(kmi->ptr, "linked_left", 1);
+	RNA_boolean_set(kmi->ptr, "linked_right", 1);
+
+	kmi= WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL|KM_ALT, 0);
+	RNA_boolean_set(kmi->ptr, "extend", 1);
+	RNA_boolean_set(kmi->ptr, "linked_left", 1);
+	RNA_boolean_set(kmi->ptr, "linked_right", 1);
+
+	kmi= WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
+	RNA_boolean_set(kmi->ptr, "extend", 1);
+	RNA_boolean_set(kmi->ptr, "linked_left", 1);
+
+	kmi= WM_keymap_add_item(keymap, "SEQUENCER_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_ALT, 0);
+	RNA_boolean_set(kmi->ptr, "extend", 1);
+	RNA_boolean_set(kmi->ptr, "linked_right", 1);
+
+	
+
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0);
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0);
 	
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_select_pick_linked", LKEY, KM_PRESS, 0, 0);
-	RNA_enum_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_select_pick_linked", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", 1);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_select_pick_linked", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", 1);
 	
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0);
 	

Modified: branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_select.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_select.c	2009-02-15 14:02:27 UTC (rev 18983)
+++ branches/blender2.5/blender/source/blender/editors/space_sequencer/sequencer_select.c	2009-02-15 17:24:09 UTC (rev 18984)
@@ -85,13 +85,13 @@
 {
 	Sequence *neighbor;
 	
-	neighbor=find_neighboring_sequence(scene, test, 1, -1);
+	neighbor=find_neighboring_sequence(scene, test, SEQ_SIDE_LEFT, -1);
 	if (neighbor) {
 		neighbor->flag |= SELECT;
 		recurs_sel_seq(neighbor);
 		neighbor->flag |= SEQ_RIGHTSEL;
 	}
-	neighbor=find_neighboring_sequence(scene, test, 2, -1);
+	neighbor=find_neighboring_sequence(scene, test, SEQ_SIDE_RIGHT, -1);
 	if (neighbor) {
 		neighbor->flag |= SELECT;
 		recurs_sel_seq(neighbor);
@@ -99,6 +99,35 @@
 	}
 	test->flag |= SELECT;
 }
+
+/* used for mouse selection and for SEQUENCER_OT_select_active_side() */
+static void select_active_side(ListBase *seqbase, int sel_side, int channel, int frame)
+{
+	Sequence *seq;
+
+	for(seq= seqbase->first; seq; seq=seq->next) {
+		if(channel==seq->machine) {
+			switch(sel_side) {
+			case SEQ_SIDE_LEFT:
+				if (frame > (seq->startdisp)) {
+					seq->flag &= ~(SEQ_RIGHTSEL|SEQ_LEFTSEL);
+					seq->flag |= SELECT;
+				}
+				break;
+			case SEQ_SIDE_RIGHT:
+				if (frame < (seq->startdisp)) {
+					seq->flag &= ~(SEQ_RIGHTSEL|SEQ_LEFTSEL);
+					seq->flag |= SELECT;
+				}
+				break;
+			case SEQ_SIDE_BOTH:
+				seq->flag &= ~(SEQ_RIGHTSEL|SEQ_LEFTSEL);
+				break;
+			}
+		}
+	}
+}
+
 #if 0 // BRING BACK
 void select_surround_from_last(Scene *scene)
 {
@@ -144,13 +173,13 @@
 		neighbor=find_neighboring_sequence(scene, seq, lr, -1);
 		if (neighbor) {
 			switch (lr) {
-			case 1:
+			case SEQ_SIDE_LEFT:
 				neighbor->flag |= SELECT;
 				recurs_sel_seq(neighbor);
 				neighbor->flag |= SEQ_RIGHTSEL;
 				seq->flag |= SEQ_LEFTSEL;
 				break;
-			case 2:
+			case SEQ_SIDE_RIGHT:
 				neighbor->flag |= SELECT;
 				recurs_sel_seq(neighbor);
 				neighbor->flag |= SEQ_LEFTSEL;
@@ -253,30 +282,25 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
-
-/* *****************Selection Operators******************* */
-static EnumPropertyItem prop_select_types[] = {
-	{0, "EXCLUSIVE", "Exclusive", ""},
-	{1, "EXTEND", "Extend", ""},
-	{0, NULL, NULL, NULL}
-};
-
 static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
 	ARegion *ar= CTX_wm_region(C);
 	View2D *v2d= UI_view2d_fromcontext(C);
 	Scene *scene= CTX_data_scene(C);
 	Editing *ed= seq_give_editing(scene, FALSE);
-	short extend= RNA_enum_is_equal(op->ptr, "type", "EXTEND");
+	short extend= RNA_boolean_get(op->ptr, "extend");
+	short linked_left= RNA_boolean_get(op->ptr, "linked_left");
+	short linked_right= RNA_boolean_get(op->ptr, "linked_right");
+
 	short mval[2];	
 	
 	Sequence *seq,*neighbor;
-	int hand,seldir, shift= 0; // XXX
+	int hand,sel_side, shift= 0; // XXX
 	TimeMarker *marker;
 
 	if(ed==NULL)
 		return OPERATOR_CANCELLED;
-
+	
 	marker=find_nearest_marker(SCE_MARKERS, 1); //XXX - dummy function for now
 	
 	mval[0]= event->x - ar->winrct.xmin;
@@ -300,7 +324,8 @@
 	} else {
 	
 		seq= find_nearest_seq(scene, v2d, &hand, mval);
-		if (extend == 0)
+
+		if(extend == 0 && linked_left==0 && linked_right==0)
 			deselect_all_seq(scene);
 	
 		if(seq) {
@@ -318,60 +343,67 @@
 			}
 	
 			if(extend && (seq->flag & SELECT)) {
-				if(hand==0) seq->flag &= SEQ_DESEL;
-				else if(hand==1) {
-					if(seq->flag & SEQ_LEFTSEL) 
-						seq->flag &= ~SEQ_LEFTSEL;
-					else seq->flag |= SEQ_LEFTSEL;
+				switch(hand) {
+				case SEQ_SIDE_NONE:
+					if (linked_left==0 && linked_right==0)
+						seq->flag &= SEQ_DESEL;
+					break;
+				case SEQ_SIDE_LEFT:
+					seq->flag ^= SEQ_LEFTSEL;
+					break;
+				case SEQ_SIDE_RIGHT:
+					seq->flag ^= SEQ_RIGHTSEL;
+					break;
 				}
-				else if(hand==2) {
-					if(seq->flag & SEQ_RIGHTSEL) 
-						seq->flag &= ~SEQ_RIGHTSEL;
-					else seq->flag |= SEQ_RIGHTSEL;
-				}
 			}
 			else {
 				seq->flag |= SELECT;
-				if(hand==1) seq->flag |= SEQ_LEFTSEL;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list