[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