From 188e3ede4fceb1187fe06800542e2b4123355a9c Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 22 Jun 2007 11:55:00 +0000 Subject: [PATCH] == NLA/IPO Muting == This commit adds a few open/closed 'eye' icons to the NLA editor to toggle IPO-block muting on Object (IPO) channels, and Action Strip muting on Action Strips, like in the Action Editor. --- source/blender/src/drawnla.c | 29 +++++++++++++++++++++-------- source/blender/src/editnla.c | 12 ++++++++++-- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/source/blender/src/drawnla.c b/source/blender/src/drawnla.c index de35a0f2906..a7f81b758a3 100644 --- a/source/blender/src/drawnla.c +++ b/source/blender/src/drawnla.c @@ -148,6 +148,15 @@ static void draw_nla_channels(void) else BIF_icon_draw(x+17, y-8, ICON_ACTION); } + + /* icon to indicate if ipo-channel muted */ + if (ob->ipo) { + if (ob->ipo->muteipo) + BIF_icon_draw(NLAWIDTH-16, y-NLACHANNELHEIGHT/2, ICON_RESTRICT_VIEW_ON); + else + BIF_icon_draw(NLAWIDTH-16, y-NLACHANNELHEIGHT/2, ICON_RESTRICT_VIEW_OFF); + } + glDisable(GL_BLEND); y-=NLACHANNELHEIGHT+NLACHANNELSKIP; @@ -192,16 +201,20 @@ static void draw_nla_channels(void) glRasterPos2f(x+48, y-4); BMF_DrawString(G.font, strip->act->id.name+2); - if(strip->flag & ACTSTRIP_ACTIVE) { - glEnable(GL_BLEND); + glEnable(GL_BLEND); + + if(strip->flag & ACTSTRIP_ACTIVE) BIF_icon_draw(x+16, y-8, ICON_DOT); - glDisable(GL_BLEND); - } - if(strip->modifiers.first) { - glEnable(GL_BLEND); + + if(strip->modifiers.first) BIF_icon_draw(x+34, y-8, ICON_MODIFIER); - glDisable(GL_BLEND); - } + + if(strip->flag & ACTSTRIP_MUTE) + BIF_icon_draw(NLAWIDTH-16, y-NLACHANNELHEIGHT/2, ICON_RESTRICT_VIEW_ON); + else + BIF_icon_draw(NLAWIDTH-16, y-NLACHANNELHEIGHT/2, ICON_RESTRICT_VIEW_OFF); + + glDisable(GL_BLEND); } y-=(NLACHANNELHEIGHT+NLACHANNELSKIP); diff --git a/source/blender/src/editnla.c b/source/blender/src/editnla.c index c433f49df27..2233db6e346 100644 --- a/source/blender/src/editnla.c +++ b/source/blender/src/editnla.c @@ -825,8 +825,12 @@ static void mouse_nlachannels(short mval[2]) if(actclick) /* de-activate all strips */ set_active_strip(ob, NULL); - else if(strip) /* set action */ - set_active_strip(ob, strip); + else if(strip) { + if(mval[0] >= (NLAWIDTH-16)) /* toggle strip muting */ + strip->flag ^= ACTSTRIP_MUTE; + else /* set action */ + set_active_strip(ob, strip); + } /* icon toggles beside strip */ if (obclick && mval[0]<20) { @@ -837,6 +841,10 @@ static void mouse_nlachannels(short mval[2]) /* override option for NLA */ ob->nlaflag ^= OB_NLA_OVERRIDE; } + else if((obclick) && (ob->ipo) && (mval[0] >= (NLAWIDTH-16))) { + /* mute Object IPO-block */ + ob->ipo->muteipo = (ob->ipo->muteipo)? 0: 1; + } ob->ctime= -1234567.0f; // eveil! DAG_object_flush_update(G.scene, ob, OB_RECALC_OB|OB_RECALC_DATA);