From 554e2fe119572920a73d704de9d0c9ba80502495 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Sat, 5 May 2007 04:46:47 +0000 Subject: Quite a few bugfixes: * Constraint sliders in Action Editor didn't update buttons window * Homekey in IPO Editor didn't respect scaling. * With Preview Range set, using the SKEY and EKEY hotkeys in the Timeline to change the extents of it, resulted to the NLA editor not being refreshed. (Note: I haven't actually seen this happening) * Keyframing options 'Avail' and 'Needed' didn't work for Objects when they had an ObAction. The problem was that the code assumed that the object had an ipo-block associated with it, but that is not the case when you have an Object Action for that object. --- source/blender/src/drawaction.c | 1 + source/blender/src/editaction.c | 20 ++++++++++++++++++++ source/blender/src/editipo.c | 16 ++++++++++++++-- source/blender/src/edittime.c | 6 ++---- source/blender/src/header_ipo.c | 11 +++++++++++ 5 files changed, 48 insertions(+), 6 deletions(-) (limited to 'source') 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; atotipo; 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) { -- cgit v1.2.3