Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2007-10-17 19:27:38 +0400
committerCampbell Barton <ideasman42@gmail.com>2007-10-17 19:27:38 +0400
commit4b6b27ea7029a3a79702f1ec8af480aaf473c4d3 (patch)
tree1081c78b8b3f60409157dcc34aee174e4960bedb /source/blender
parent8bb97b6efa90ca62289d5798890e55a12f34b638 (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')
-rw-r--r--source/blender/include/mydevice.h2
-rw-r--r--source/blender/src/drawseq.c5
-rw-r--r--source/blender/src/drawtime.c2
-rw-r--r--source/blender/src/editaction.c22
-rw-r--r--source/blender/src/editnla.c48
-rw-r--r--source/blender/src/editseq.c218
-rw-r--r--source/blender/src/editsound.c25
-rw-r--r--source/blender/src/edittime.c30
-rw-r--r--source/blender/src/header_action.c18
-rw-r--r--source/blender/src/header_ipo.c13
-rw-r--r--source/blender/src/header_nla.c12
-rw-r--r--source/blender/src/header_seq.c65
-rw-r--r--source/blender/src/header_sound.c6
-rw-r--r--source/blender/src/space.c80
-rw-r--r--source/blender/src/transform_conversions.c12
15 files changed, 281 insertions, 277 deletions
diff --git a/source/blender/include/mydevice.h b/source/blender/include/mydevice.h
index 113b281a017..02e7404584b 100644
--- a/source/blender/include/mydevice.h
+++ b/source/blender/include/mydevice.h
@@ -253,6 +253,8 @@
#define REDRAWANIM 0x4037
#define REDRAWNODE 0x4038
#define RECALC_COMPOSITE 0x4039
+#define REDRAWMARKER 0x4040 /* all views that display markers */
+
#endif /* !__MYDEVICE_H__ */
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 */