diff options
author | Campbell Barton <ideasman42@gmail.com> | 2007-10-17 19:27:38 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2007-10-17 19:27:38 +0400 |
commit | 4b6b27ea7029a3a79702f1ec8af480aaf473c4d3 (patch) | |
tree | 1081c78b8b3f60409157dcc34aee174e4960bedb /source/blender/src | |
parent | 8bb97b6efa90ca62289d5798890e55a12f34b638 (diff) |
markers in the sequencer
- added a new redraw type - REDRAWMARKER, at the moment this draws the same windows as REDRAWANIM, but this may not always be true, and it is more explicit whats
happening, This replaced 5 or so draw calls in quite a few places.
Diffstat (limited to 'source/blender/src')
-rw-r--r-- | source/blender/src/drawseq.c | 5 | ||||
-rw-r--r-- | source/blender/src/drawtime.c | 2 | ||||
-rw-r--r-- | source/blender/src/editaction.c | 22 | ||||
-rw-r--r-- | source/blender/src/editnla.c | 48 | ||||
-rw-r--r-- | source/blender/src/editseq.c | 218 | ||||
-rw-r--r-- | source/blender/src/editsound.c | 25 | ||||
-rw-r--r-- | source/blender/src/edittime.c | 30 | ||||
-rw-r--r-- | source/blender/src/header_action.c | 18 | ||||
-rw-r--r-- | source/blender/src/header_ipo.c | 13 | ||||
-rw-r--r-- | source/blender/src/header_nla.c | 12 | ||||
-rw-r--r-- | source/blender/src/header_seq.c | 65 | ||||
-rw-r--r-- | source/blender/src/header_sound.c | 6 | ||||
-rw-r--r-- | source/blender/src/space.c | 80 | ||||
-rw-r--r-- | source/blender/src/transform_conversions.c | 12 |
14 files changed, 279 insertions, 277 deletions
diff --git a/source/blender/src/drawseq.c b/source/blender/src/drawseq.c index 7986a6da19a..8159d0fb999 100644 --- a/source/blender/src/drawseq.c +++ b/source/blender/src/drawseq.c @@ -945,7 +945,7 @@ static void draw_extra_seqinfo(void) } } else { /* single image */ if (last_seq->strip) { - sprintf(str, "Single: %s", last_seq->strip->stripdata->name); + sprintf(str, "Single: %s len: %d", last_seq->strip->stripdata->name, last_seq->enddisp-last_seq->startdisp); glRasterPos3f(xco, yco, 0.0); BMF_DrawString(G.font, str); xco += xfac*BMF_GetStringWidth(G.font, str) +30.0*xfac; @@ -1443,6 +1443,9 @@ void drawseqspace(ScrArea *sa, void *spacedata) draw_extra_seqinfo(); + /* Draw markers */ + draw_markers_timespace(); + /* restore viewport */ mywinset(sa->win); diff --git a/source/blender/src/drawtime.c b/source/blender/src/drawtime.c index 237c42e328d..62b568e6721 100644 --- a/source/blender/src/drawtime.c +++ b/source/blender/src/drawtime.c @@ -127,7 +127,7 @@ static void draw_cfra_time(SpaceTime *stime) ui_rasterpos_safe(x * xscale, y * yscale, 1.0); BIF_DrawString(G.fonts, str, 0); - + printf("%f -- %f\n", xscale, yscale); glScalef(xscale, yscale, 1.0); } diff --git a/source/blender/src/editaction.c b/source/blender/src/editaction.c index ea5117a3991..3957b107814 100644 --- a/source/blender/src/editaction.c +++ b/source/blender/src/editaction.c @@ -2253,11 +2253,7 @@ static void mouse_action (int selectmode) std_rmouse_transform(transform_markers); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } } @@ -2680,10 +2676,7 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt) column_select_action_keys(val); } - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); + allqueue(REDRAWMARKER, 0); break; case MKEY: @@ -2706,11 +2699,7 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt) rename_marker(); else break; - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } break; @@ -2734,11 +2723,8 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt) else if (G.qual & LR_ALTKEY) /* clear preview range */ anim_previewrange_clear(); - allqueue(REDRAWTIME, 0); + allqueue(REDRAWMARKER, 0); allqueue(REDRAWBUTSALL, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWIPO, 0); break; case SKEY: diff --git a/source/blender/src/editnla.c b/source/blender/src/editnla.c index fd869feda2a..0361d5395c2 100644 --- a/source/blender/src/editnla.c +++ b/source/blender/src/editnla.c @@ -1203,11 +1203,7 @@ void borderselect_nla(void) } } BIF_undo_push("Border select NLA"); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } } @@ -1262,11 +1258,7 @@ static void mouse_nla(int selectmode) std_rmouse_transform(transform_markers); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } else { /* Try action ipo selection */ @@ -1725,11 +1717,7 @@ void winqreadnlaspace(ScrArea *sa, void *spacedata, BWinEvent *evt) shift_nlastrips_up(); else { nextprev_marker(1); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } break; @@ -1742,11 +1730,7 @@ void winqreadnlaspace(ScrArea *sa, void *spacedata, BWinEvent *evt) shift_nlastrips_down(); else { nextprev_marker(-1); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } break; @@ -1758,11 +1742,7 @@ void winqreadnlaspace(ScrArea *sa, void *spacedata, BWinEvent *evt) } else if (G.qual & LR_CTRLKEY) { deselect_markers(1, 0); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } else{ if (mval[0]>=NLAWIDTH) @@ -1831,11 +1811,7 @@ void winqreadnlaspace(ScrArea *sa, void *spacedata, BWinEvent *evt) rename_marker(); else break; - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; case NKEY: @@ -1856,11 +1832,7 @@ void winqreadnlaspace(ScrArea *sa, void *spacedata, BWinEvent *evt) anim_previewrange_set(); else if (G.qual & LR_ALTKEY) /* clear preview range */ anim_previewrange_clear(); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWBUTSALL, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWIPO, 0); + allqueue(REDRAWMARKER, 0); break; case SKEY: @@ -1908,11 +1880,7 @@ void winqreadnlaspace(ScrArea *sa, void *spacedata, BWinEvent *evt) remove_marker(); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } } break; diff --git a/source/blender/src/editseq.c b/source/blender/src/editseq.c index 9499b515671..9bf5ee7a611 100644 --- a/source/blender/src/editseq.c +++ b/source/blender/src/editseq.c @@ -83,6 +83,7 @@ #include "BIF_editview.h" #include "BIF_scrarea.h" #include "BIF_editsound.h" +#include "BIF_imasel.h" #include "BSE_edit.h" #include "BSE_sequence.h" @@ -90,6 +91,7 @@ #include "BSE_filesel.h" #include "BSE_drawipo.h" #include "BSE_seqaudio.h" +#include "BSE_time.h" #include "BDR_editobject.h" @@ -144,7 +146,6 @@ void clear_last_seq(Sequence *seq) } - /* seq funcs's for transforming internally notice the difference between start/end and left/right. @@ -664,99 +665,141 @@ void mouse_select_seq(void) { Sequence *seq,*neighbor; int hand,seldir; - - seq= find_nearest_seq(&hand); - - if(!(G.qual & LR_SHIFTKEY)&&!(G.qual & LR_ALTKEY)&&!(G.qual & LR_CTRLKEY)) deselect_all_seq(); - - if(seq) { - set_last_seq(seq); - - if ((seq->type == SEQ_IMAGE) || (seq->type == SEQ_MOVIE)) { - if(seq->strip) { - strncpy(last_imagename, seq->strip->dir, FILE_MAXDIR-1); - } - } else - if (seq->type == SEQ_HD_SOUND || seq->type == SEQ_RAM_SOUND) { - if(seq->strip) { - strncpy(last_sounddir, seq->strip->dir, FILE_MAXDIR-1); - } - } - - if((G.qual & LR_SHIFTKEY) && (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; - } - else if(hand==2) { - if(seq->flag & SEQ_RIGHTSEL) - seq->flag &= ~SEQ_RIGHTSEL; - else seq->flag |= SEQ_RIGHTSEL; - } + TimeMarker *marker; + + marker=find_nearest_marker(1); + + if (marker) { + int oldflag; + /* select timeline marker */ + if ((G.qual & LR_SHIFTKEY)==0) { + oldflag= marker->flag; + deselect_markers(0, 0); + + if (oldflag & SELECT) + marker->flag &= ~SELECT; + else + marker->flag |= SELECT; } else { - seq->flag |= SELECT; - if(hand==1) seq->flag |= SEQ_LEFTSEL; - if(hand==2) seq->flag |= SEQ_RIGHTSEL; + marker->flag |= SELECT; } + allqueue(REDRAWMARKER, 0); + force_draw(0); + + BIF_undo_push("Select Strips, Sequencer"); - /* On Ctrl-Alt selection, select the strip and bordering handles */ - if ((G.qual & LR_CTRLKEY) && (G.qual & LR_ALTKEY)) { - if (!(G.qual & LR_SHIFTKEY)) deselect_all_seq(); - seq->flag |= SELECT; - select_surrounding_handles(seq); - - /* Ctrl signals Left, Alt signals Right - First click selects adjacent handles on that side. - Second click selects all strips in that direction. - If there are no adjacent strips, it just selects all in that direction. */ - } else if (((G.qual & LR_CTRLKEY) || (G.qual & LR_ALTKEY)) && (seq->flag & SELECT)) { + } else { - if (G.qual & LR_CTRLKEY) seldir=1; - else seldir=2; - neighbor=find_neighboring_sequence(seq, seldir); - if (neighbor) { - switch (seldir) { - case 1: - if ((seq->flag & SEQ_LEFTSEL)&&(neighbor->flag & SEQ_RIGHTSEL)) { - if (!(G.qual & LR_SHIFTKEY)) deselect_all_seq(); - select_channel_direction(seq,1); - } else { - neighbor->flag |= SELECT; - recurs_sel_seq(neighbor); - neighbor->flag |= SEQ_RIGHTSEL; - seq->flag |= SEQ_LEFTSEL; - } - break; - case 2: - if ((seq->flag & SEQ_RIGHTSEL)&&(neighbor->flag & SEQ_LEFTSEL)) { - if (!(G.qual & LR_SHIFTKEY)) deselect_all_seq(); - select_channel_direction(seq,2); - } else { - neighbor->flag |= SELECT; - recurs_sel_seq(neighbor); - neighbor->flag |= SEQ_LEFTSEL; - seq->flag |= SEQ_RIGHTSEL; - } - break; + seq= find_nearest_seq(&hand); + if(!(G.qual & LR_SHIFTKEY)&&!(G.qual & LR_ALTKEY)&&!(G.qual & LR_CTRLKEY)) deselect_all_seq(); + + if(seq) { + set_last_seq(seq); + + if ((seq->type == SEQ_IMAGE) || (seq->type == SEQ_MOVIE)) { + if(seq->strip) { + strncpy(last_imagename, seq->strip->dir, FILE_MAXDIR-1); + } + } else + if (seq->type == SEQ_HD_SOUND || seq->type == SEQ_RAM_SOUND) { + if(seq->strip) { + strncpy(last_sounddir, seq->strip->dir, FILE_MAXDIR-1); } - } else { - if (!(G.qual & LR_SHIFTKEY)) deselect_all_seq(); - select_channel_direction(seq,seldir); } - } + + if((G.qual & LR_SHIFTKEY) && (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; + } + 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; + if(hand==2) seq->flag |= SEQ_RIGHTSEL; + } + + /* On Ctrl-Alt selection, select the strip and bordering handles */ + if ((G.qual & LR_CTRLKEY) && (G.qual & LR_ALTKEY)) { + if (!(G.qual & LR_SHIFTKEY)) deselect_all_seq(); + seq->flag |= SELECT; + select_surrounding_handles(seq); + + /* Ctrl signals Left, Alt signals Right + First click selects adjacent handles on that side. + Second click selects all strips in that direction. + If there are no adjacent strips, it just selects all in that direction. */ + } else if (((G.qual & LR_CTRLKEY) || (G.qual & LR_ALTKEY)) && (seq->flag & SELECT)) { - recurs_sel_seq(seq); - } + if (G.qual & LR_CTRLKEY) seldir=1; + else seldir=2; + neighbor=find_neighboring_sequence(seq, seldir); + if (neighbor) { + switch (seldir) { + case 1: + if ((seq->flag & SEQ_LEFTSEL)&&(neighbor->flag & SEQ_RIGHTSEL)) { + if (!(G.qual & LR_SHIFTKEY)) deselect_all_seq(); + select_channel_direction(seq,1); + } else { + neighbor->flag |= SELECT; + recurs_sel_seq(neighbor); + neighbor->flag |= SEQ_RIGHTSEL; + seq->flag |= SEQ_LEFTSEL; + } + break; + case 2: + if ((seq->flag & SEQ_RIGHTSEL)&&(neighbor->flag & SEQ_LEFTSEL)) { + if (!(G.qual & LR_SHIFTKEY)) deselect_all_seq(); + select_channel_direction(seq,2); + } else { + neighbor->flag |= SELECT; + recurs_sel_seq(neighbor); + neighbor->flag |= SEQ_LEFTSEL; + seq->flag |= SEQ_RIGHTSEL; + } + break; + } + } else { + if (!(G.qual & LR_SHIFTKEY)) deselect_all_seq(); + select_channel_direction(seq,seldir); + } + } - force_draw(0); + recurs_sel_seq(seq); + } + force_draw(0); - if(get_last_seq()) allqueue(REDRAWIPO, 0); - BIF_undo_push("Select Strips, Sequencer"); + if(get_last_seq()) allqueue(REDRAWIPO, 0); + BIF_undo_push("Select Strips, Sequencer"); - std_rmouse_transform(transform_seq); + std_rmouse_transform(transform_seq); + } + + /* marker transform */ + if (marker) { + short mval[2], xo, yo; + getmouseco_areawin(mval); + xo= mval[0]; + yo= mval[1]; + + while(get_mbut()&R_MOUSE) { + getmouseco_areawin(mval); + if(abs(mval[0]-xo)+abs(mval[1]-yo) > 4) { + transform_markers('g', 0); + allqueue(REDRAWMARKER, 0); + return; + } + BIF_wait_for_statechange(); + } + } } @@ -1684,8 +1727,11 @@ void add_sequence(int type) switch(event) { case 1: - - activate_fileselect(FILE_SPECIAL, "Select Images", last_imagename, add_image_strips); + /* Image Dosnt work at the moment - TODO */ + //if(G.qual & LR_CTRLKEY) + // activate_imageselect(FILE_SPECIAL, "Select Images", last_imagename, add_image_strips); + //else + activate_fileselect(FILE_SPECIAL, "Select Images", last_imagename, add_image_strips); break; case 105: activate_fileselect(FILE_SPECIAL, "Select Movie+Audio", last_imagename, add_movie_and_hdaudio_strip); @@ -3052,7 +3098,7 @@ void seq_separate_images(void) Sequence *seq, *seq_new, *seq_next; Strip *strip_new; StripElem *se, *se_new; - int start, start_ofs, cfra, frame_end; + int start_ofs, cfra, frame_end; static int step= 1; add_numbut(0, NUM|INT, "Image Duration:", 1, 256, &step, NULL); diff --git a/source/blender/src/editsound.c b/source/blender/src/editsound.c index e167ebbafb4..2e333b9f43e 100644 --- a/source/blender/src/editsound.c +++ b/source/blender/src/editsound.c @@ -219,11 +219,7 @@ void winqreadsoundspace(ScrArea *sa, void *spacedata, BWinEvent *evt) case AKEY: /* select/deselect all */ deselect_markers(1, 0); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; case BKEY: /* borderselect markers */ @@ -234,11 +230,7 @@ void winqreadsoundspace(ScrArea *sa, void *spacedata, BWinEvent *evt) if (G.qual & LR_SHIFTKEY) { duplicate_marker(); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } break; @@ -252,11 +244,7 @@ void winqreadsoundspace(ScrArea *sa, void *spacedata, BWinEvent *evt) else add_marker(CFRA); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; case TKEY: /* toggle time display */ @@ -273,12 +261,7 @@ void winqreadsoundspace(ScrArea *sa, void *spacedata, BWinEvent *evt) case XKEY: if (okee("Erase selected")) { remove_marker(); - - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } break; } diff --git a/source/blender/src/edittime.c b/source/blender/src/edittime.c index 575bc14dcd3..d9981f58ac2 100644 --- a/source/blender/src/edittime.c +++ b/source/blender/src/edittime.c @@ -282,11 +282,7 @@ void transform_markers(int mode, int smode) // mode and smode unused here, for c BIF_undo_push("Move Markers"); } MEM_freeN(oldframe); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } /* select/deselect all TimeMarkers @@ -387,11 +383,7 @@ void borderselect_markers(void) borderselect_markers_func(rectf.xmin, rectf.xmax, selectmode); BIF_undo_push("Border Select Markers"); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } } @@ -919,11 +911,7 @@ void winqreadtimespace(ScrArea *sa, void *spacedata, BWinEvent *evt) case AKEY: /* deselect all TimeMarkers */ deselect_markers(1, 0); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; case BKEY: /* borderselect markers */ @@ -954,11 +942,7 @@ void winqreadtimespace(ScrArea *sa, void *spacedata, BWinEvent *evt) rename_marker(); else add_marker(CFRA); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; case PKEY: /* preview-range stuff */ if (G.qual & LR_CTRLKEY) /* set preview range */ @@ -989,11 +973,7 @@ void winqreadtimespace(ScrArea *sa, void *spacedata, BWinEvent *evt) if( okee("Erase selected")==0 ) break; remove_marker(); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; } } diff --git a/source/blender/src/header_action.c b/source/blender/src/header_action.c index 71aac0e81bb..a305607faad 100644 --- a/source/blender/src/header_action.c +++ b/source/blender/src/header_action.c @@ -499,11 +499,7 @@ static void do_action_selectmenu(void *arg, int event) case ACTMENU_SEL_ALL_MARKERS: /* select/deselect all markers */ deselect_markers(1, 0); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; case ACTMENU_SEL_INVERSE_KEYS: /* invert selection status of keys */ @@ -515,11 +511,7 @@ static void do_action_selectmenu(void *arg, int event) case ACTMENU_SEL_INVERSE_MARKERS: /* invert selection of markers */ deselect_markers(0, 2); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; } } @@ -1062,11 +1054,7 @@ static void do_action_markermenu(void *arg, int event) break; } - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } static uiBlock *action_markermenu(void *arg_unused) diff --git a/source/blender/src/header_ipo.c b/source/blender/src/header_ipo.c index 16420f1536b..d2b16da3b35 100644 --- a/source/blender/src/header_ipo.c +++ b/source/blender/src/header_ipo.c @@ -796,14 +796,11 @@ static void do_ipo_selectmenu(void *arg, int event) break; case 2: borderselect_markers(); + allqueue(REDRAWMARKER, 0); break; case 3: deselect_markers(1, 0); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; } } @@ -858,11 +855,7 @@ static void do_ipo_markermenu(void *arg, int event) break; } - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } static uiBlock *ipo_markermenu(void *arg_unused) diff --git a/source/blender/src/header_nla.c b/source/blender/src/header_nla.c index 62fd1b26a2d..297e21ef2f6 100644 --- a/source/blender/src/header_nla.c +++ b/source/blender/src/header_nla.c @@ -202,11 +202,7 @@ static void do_nla_selectmenu(void *arg, int event) break; case 3: /* Select/Deselect All Markers */ deselect_markers(1, 0); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; case 4: /* Borderselect markers */ borderselect_markers(); @@ -405,11 +401,7 @@ static void do_nla_markermenu(void *arg, int event) break; } - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } static uiBlock *nla_markermenu(void *arg_unused) diff --git a/source/blender/src/header_seq.c b/source/blender/src/header_seq.c index 935dd2854a8..6864268ffa8 100644 --- a/source/blender/src/header_seq.c +++ b/source/blender/src/header_seq.c @@ -63,7 +63,7 @@ #include "BSE_drawipo.h" #include "BSE_headerbuttons.h" #include "BSE_sequence.h" - +#include "BSE_time.h" #include "blendef.h" #include "mydevice.h" @@ -507,6 +507,65 @@ static uiBlock *seq_editmenu(void *arg_unused) return block; } +static void do_seq_markermenu(void *arg, int event) +{ + switch(event) + { + case 1: + add_marker(CFRA); + break; + case 2: + duplicate_marker(); + break; + case 3: + remove_marker(); + break; + case 4: + rename_marker(); + break; + case 5: + transform_markers('g', 0); + break; + } + + allqueue(REDRAWMARKER, 0); +} + +static uiBlock *seq_markermenu(void *arg_unused) +{ + uiBlock *block; + short yco= 0, menuwidth=120; + + block= uiNewBlock(&curarea->uiblocks, "ipo_markermenu", + UI_EMBOSSP, UI_HELV, curarea->headwin); + uiBlockSetButmFunc(block, do_seq_markermenu, NULL); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Add Marker|Ctrl Alt M", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Duplicate Marker|Ctrl Shift D", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Delete Marker", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); + + uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); + + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "(Re)Name Marker|Ctrl M", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grab/Move Marker|Ctrl G", 0, yco-=20, + menuwidth, 19, NULL, 0.0, 0.0, 1, 5, ""); + + if(curarea->headertype==HEADERTOP) { + uiBlockSetDirection(block, UI_DOWN); + } + else { + uiBlockSetDirection(block, UI_TOP); + uiBlockFlipOrder(block); + } + + uiTextBoundsBlock(block, 50); + + return block; +} void do_seq_buttons(short event) { @@ -582,6 +641,10 @@ void seq_buttons() uiDefPulldownBut(block,seq_selectmenu, NULL, "Select", xco, -2, xmax-3, 24, ""); xco+=xmax; + xmax= GetButStringLength("Marker"); + uiDefPulldownBut(block,seq_markermenu, NULL, "Marker", xco, -2, xmax-3, 24, ""); + xco+=xmax; + xmax= GetButStringLength("Add"); uiDefPulldownBut(block, seq_addmenu, NULL, "Add", xco, -2, xmax-3, 24, ""); xco+= xmax; diff --git a/source/blender/src/header_sound.c b/source/blender/src/header_sound.c index 55c14f1a0aa..c2fb72d7d17 100644 --- a/source/blender/src/header_sound.c +++ b/source/blender/src/header_sound.c @@ -269,11 +269,7 @@ static void do_sound_markermenu(void *arg, int event) break; } - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } static uiBlock *sound_markermenu(void *arg_unused) diff --git a/source/blender/src/space.c b/source/blender/src/space.c index 5f305efcb8b..9ccbf169cea 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -2749,11 +2749,7 @@ static void winqreadipospace(ScrArea *sa, void *spacedata, BWinEvent *evt) break; case RIGHTMOUSE: mouse_select_ipo(); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); break; case MIDDLEMOUSE: if(in_ipo_buttons()) { @@ -2801,11 +2797,7 @@ static void winqreadipospace(ScrArea *sa, void *spacedata, BWinEvent *evt) case AKEY: if (G.qual & LR_CTRLKEY) { deselect_markers(1, 0); - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + allqueue(REDRAWMARKER, 0); } else if (G.qual==0) { if(in_ipo_buttons()) { @@ -2834,15 +2826,18 @@ static void winqreadipospace(ScrArea *sa, void *spacedata, BWinEvent *evt) move_to_frame(); break; case DKEY: - if (G.qual==LR_SHIFTKEY) + if (G.qual==LR_SHIFTKEY) { add_duplicate_editipo(); - else if (G.qual == (LR_CTRLKEY|LR_SHIFTKEY)) + } else if (G.qual == (LR_CTRLKEY|LR_SHIFTKEY)) { duplicate_marker(); + allqueue(REDRAWMARKER, 0); + } break; case GKEY: - if (G.qual & LR_CTRLKEY) + if (G.qual & LR_CTRLKEY) { transform_markers('g', 0); - else if (G.qual==0) + allqueue(REDRAWMARKER, 0); + } else if (G.qual==0) transform_ipo('g'); break; case HKEY: @@ -2866,21 +2861,17 @@ static void winqreadipospace(ScrArea *sa, void *spacedata, BWinEvent *evt) } break; case MKEY: - if (G.qual==LR_SHIFTKEY) { + if (G.qual==0) { + add_marker(CFRA); + } else if (G.qual==LR_SHIFTKEY) { ipo_mirror_menu(); break; - } - if (G.qual == 0) - add_marker(CFRA); - else if (G.qual == LR_CTRLKEY) + } else if (G.qual == LR_CTRLKEY) { rename_marker(); - else + } else { break; - allqueue(REDRAWTIME, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWSOUND, 0); + } + allqueue(REDRAWMARKER, 0); break; case NKEY: toggle_blockhandler(sa, IPO_HANDLER_PROPERTIES, UI_PNL_TO_MOUSE); @@ -4552,8 +4543,12 @@ static void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt) } break; case DKEY: - if(sseq->mainb) break; - if((G.qual==LR_SHIFTKEY)) add_duplicate_seq(); + if (G.qual == (LR_CTRLKEY|LR_SHIFTKEY)) + duplicate_marker(); + else if ((G.qual==LR_SHIFTKEY)) { + if(sseq->mainb) break; + add_duplicate_seq(); + } break; case EKEY: if(sseq->mainb) break; @@ -4565,9 +4560,12 @@ static void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt) set_filter_seq(); break; case GKEY: - if(sseq->mainb) break; - if((G.qual==0)) + if (G.qual & LR_CTRLKEY) + transform_markers('g', 0); + else if (G.qual==0) { + if(sseq->mainb) break; transform_seq('g', 0); + } break; case KKEY: if((G.qual==0)) { /* Cut at current frame */ @@ -4580,19 +4578,28 @@ static void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt) } break; case MKEY: - if(G.qual==LR_ALTKEY) - un_meta(); - else if((G.qual==0)){ + if(G.qual==LR_ALTKEY) { + un_meta(); + break; /*dont redraw timeline etc */ + } else if((G.qual==0)){ if ((last_seq) && (last_seq->type == SEQ_RAM_SOUND || last_seq->type == SEQ_HD_SOUND)) { last_seq->flag ^= SEQ_MUTE; doredraw = 1; - } - else + } else { make_meta(); + } + break; /*dont redraw timeline etc */ + } else if ((G.qual==(LR_CTRLKEY|LR_ALTKEY) )) { + add_marker(CFRA); + } else if ((G.qual==LR_CTRLKEY)) { + rename_marker(); + } else { + break; /* do nothing */ } + allqueue(REDRAWMARKER, 0); break; case NKEY: if(G.qual==0) { @@ -6179,6 +6186,11 @@ void allqueue(unsigned short event, short val) scrarea_queue_winredraw(sa); if(val) scrarea_queue_headredraw(sa); } + case REDRAWMARKER: /* markers may not always match animation */ + if ELEM6(sa->spacetype, SPACE_TIME, SPACE_IPO, SPACE_ACTION, SPACE_NLA, SPACE_SOUND, SPACE_SEQ) { + scrarea_queue_winredraw(sa); + if(val) scrarea_queue_headredraw(sa); + } } } sa= sa->next; diff --git a/source/blender/src/transform_conversions.c b/source/blender/src/transform_conversions.c index 2f030a4a394..7cb4c9b38c4 100644 --- a/source/blender/src/transform_conversions.c +++ b/source/blender/src/transform_conversions.c @@ -2614,11 +2614,7 @@ void autokeyframe_ob_cb_func(Object *ob, int tmode) } remake_object_ipos(ob); - allqueue(REDRAWIPO, 0); - allspace(REMAKEIPO, 0); - allqueue(REDRAWVIEW3D, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWTIME, 0); + allqueue(REDRAWMARKER, 0); } } @@ -2700,11 +2696,7 @@ void autokeyframe_pose_cb_func(Object *ob, int tmode, short targetless_ik) } remake_action_ipos (act); - allspace(REMAKEIPO, 0); - allqueue(REDRAWACTION, 0); - allqueue(REDRAWIPO, 0); - allqueue(REDRAWNLA, 0); - allqueue(REDRAWTIME, 0); + allqueue(REDRAWMARKER, 0); } else { /* tag channels that should have unkeyed data */ |