diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/src/drawaction.c | 1 | ||||
-rw-r--r-- | source/blender/src/editaction.c | 20 | ||||
-rw-r--r-- | source/blender/src/editipo.c | 16 | ||||
-rw-r--r-- | source/blender/src/edittime.c | 6 | ||||
-rw-r--r-- | source/blender/src/header_ipo.c | 11 |
5 files changed, 48 insertions, 6 deletions
diff --git a/source/blender/src/drawaction.c b/source/blender/src/drawaction.c index 9ffb6c7da64..cf76d69f60b 100644 --- a/source/blender/src/drawaction.c +++ b/source/blender/src/drawaction.c @@ -213,6 +213,7 @@ static void icu_slider_func(void *voidicu, void *voidignore) allqueue (REDRAWNLA, 0); allqueue (REDRAWIPO, 0); allspace(REMAKEIPO, 0); + allqueue(REDRAWBUTSALL, 0); } static void make_icu_slider(uiBlock *block, IpoCurve *icu, diff --git a/source/blender/src/editaction.c b/source/blender/src/editaction.c index 83e341af8fa..5af14219668 100644 --- a/source/blender/src/editaction.c +++ b/source/blender/src/editaction.c @@ -2032,13 +2032,33 @@ static void mouse_actionchannels (short mval[]) case ACTTYPE_FILLIPO: { bActionChannel *achan= (bActionChannel *)act_channel; + achan->flag ^= ACHAN_SHOWIPO; + + if ((mval[0] > 24) && (achan->flag & ACHAN_SHOWIPO)) { + /* select+make active achan */ + deselect_actionchannels(act, 0); + select_channel(act, achan, SELECT_ADD); + + /* messy... set active bone */ + select_poseelement_by_name(achan->name, 2); + } } break; case ACTTYPE_FILLCON: { bActionChannel *achan= (bActionChannel *)act_channel; + achan->flag ^= ACHAN_SHOWCONS; + + if ((mval[0] > 24) && (achan->flag & ACHAN_SHOWCONS)) { + /* select+make active achan */ + deselect_actionchannels(act, 0); + select_channel(act, achan, SELECT_ADD); + + /* messy... set active bone */ + select_poseelement_by_name(achan->name, 2); + } } break; case ACTTYPE_ICU: diff --git a/source/blender/src/editipo.c b/source/blender/src/editipo.c index 98502c1f226..95e998d3496 100644 --- a/source/blender/src/editipo.c +++ b/source/blender/src/editipo.c @@ -2893,8 +2893,20 @@ void common_insertkey(void) actname= "Object"; /* all curves in ipo deselect */ - if(base->object->ipo) { - icu= base->object->ipo->curve.first; + if(base->object->ipo || base->object->action) { + if (base->object->ipo) { + icu= base->object->ipo->curve.first; + } + else { + bActionChannel *achan; + achan= get_action_channel(base->object->action, actname); + + if (achan && achan->ipo) + icu= achan->ipo->curve.first; + else + icu= NULL; + } + while(icu) { icu->flag &= ~IPO_SELECT; diff --git a/source/blender/src/edittime.c b/source/blender/src/edittime.c index 487dd0fbe3b..83e8e5473e1 100644 --- a/source/blender/src/edittime.c +++ b/source/blender/src/edittime.c @@ -932,8 +932,7 @@ void winqreadtimespace(ScrArea *sa, void *spacedata, BWinEvent *evt) } else G.scene->r.efra = CFRA; - allqueue(REDRAWBUTSALL, 0); - allqueue(REDRAWTIME, 1); + allqueue(REDRAWALL, 1); break; case MKEY: /* add, rename marker */ if (G.qual & LR_CTRLKEY) @@ -960,8 +959,7 @@ void winqreadtimespace(ScrArea *sa, void *spacedata, BWinEvent *evt) } else G.scene->r.sfra = CFRA; - allqueue(REDRAWBUTSALL, 0); - allqueue(REDRAWTIME, 1); + allqueue(REDRAWALL, 1); break; case TKEY: /* popup menu */ nr= pupmenu("Time value%t|Frames %x1|Seconds%x2"); diff --git a/source/blender/src/header_ipo.c b/source/blender/src/header_ipo.c index d4041a817db..1c117e0331e 100644 --- a/source/blender/src/header_ipo.c +++ b/source/blender/src/header_ipo.c @@ -961,6 +961,12 @@ void do_ipo_buttons(short event) ei= G.sipo->editipo; if(ei==0) return; + + /* map ipo-points for drawing if scaled ipo */ + if (OBACT && OBACT->action && G.sipo->pin==0 && G.sipo->actname) { + actstrip_map_ipo_keys(OBACT, G.sipo->ipo, 0, 0); + } + for(a=0; a<G.sipo->totipo; a++, ei++) { if ISPOIN(ei, flag & IPO_VISIBLE, icu) { @@ -973,6 +979,11 @@ void do_ipo_buttons(short event) else BLI_union_rctf(&(v2d->tot), &(ei->icu->totrct)); } } + + /* undo mapping of ipo-points for drawing if scaled ipo */ + if (OBACT && OBACT->action && G.sipo->pin==0 && G.sipo->actname) { + actstrip_map_ipo_keys(OBACT, G.sipo->ipo, 1, 0); + } /* speciale home */ if(G.qual & LR_SHIFTKEY) { |