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:
authorJoshua Leung <aligorith@gmail.com>2007-05-07 15:59:43 +0400
committerJoshua Leung <aligorith@gmail.com>2007-05-07 15:59:43 +0400
commit147cbe93c243db447ab1e5a5585a8e987c25df74 (patch)
tree30d9a2779e798e020b79a34cc73d9f7ea572242c
parentc006be19296cb434054b257ffe2b556470fd261c (diff)
== Action Editor - Bugfix #6660 ==
When trying to expand the IPO-curves for Shapekey Action Channels, Blender crashed due to that being a previously un-handled case. For some reason, the names of IPO curve channels are still not drawing on some machines. I've also disabled the display of shapekey channels when there is an action as the two used to overlap and muck up the drawing matrices of each other.
-rw-r--r--source/blender/src/drawaction.c26
-rw-r--r--source/blender/src/editipo_lib.c16
2 files changed, 29 insertions, 13 deletions
diff --git a/source/blender/src/drawaction.c b/source/blender/src/drawaction.c
index cf76d69f60b..9ae34d59226 100644
--- a/source/blender/src/drawaction.c
+++ b/source/blender/src/drawaction.c
@@ -599,10 +599,10 @@ static void draw_channel_names(void)
*/
draw_action_channel_names(act);
}
- if ( (key = get_action_mesh_key()) ) {
+ else if ( (key = get_action_mesh_key()) ) {
/* if there is a mesh selected with rvk's,
- * then draw the RVK names
- */
+ * then draw the RVK names
+ */
draw_action_mesh_names(key);
}
@@ -953,7 +953,7 @@ void drawactionspace(ScrArea *sa, void *spacedata)
* oughta fix it
*/
- if (key) {
+ if (!act && key) {
if (G.v2d->cur.ymin < -CHANNELHEIGHT)
G.v2d->cur.ymin = -CHANNELHEIGHT;
@@ -1007,9 +1007,10 @@ void drawactionspace(ScrArea *sa, void *spacedata)
check_action_context(G.saction);
/* Draw channel strips */
- draw_channel_strips(G.saction);
-
- if (key) {
+ if (act) {
+ draw_channel_strips(G.saction);
+ }
+ else if (key) {
/* if there is a mesh with rvk's selected,
* then draw the key frames in the action window
*/
@@ -1048,15 +1049,18 @@ void drawactionspace(ScrArea *sa, void *spacedata)
draw_channel_names();
if(sa->winx > 50 + NAMEWIDTH + SLIDERWIDTH) {
- if (key) {
+ if (act) {
+ /* if there is an action, draw sliders for its
+ * ipo-curve channels in the action window
+ */
+ action_icu_buts(G.saction);
+ }
+ else if (key) {
/* if there is a mesh with rvk's selected,
* then draw the key frames in the action window
*/
meshactionbuts(G.saction, OBACT, key);
}
- else if (act) {
- action_icu_buts(G.saction);
- }
}
}
diff --git a/source/blender/src/editipo_lib.c b/source/blender/src/editipo_lib.c
index 8707e5dd12c..96be44e1234 100644
--- a/source/blender/src/editipo_lib.c
+++ b/source/blender/src/editipo_lib.c
@@ -27,6 +27,8 @@
/* ********** General calls (minimal dependencies) for editing Ipos in Blender ************* */
+#include <stdio.h>
+
#include "BLI_blenlib.h"
#include "BLI_arithb.h"
@@ -132,10 +134,20 @@ int geticon_ipo_blocktype(short blocktype)
char *getname_ipocurve(IpoCurve *icu)
{
switch (icu->blocktype) {
- case ID_OB:
- return getname_ob_ei(icu->adrcode, 0); /* dummy 2nd arg */
+ case ID_OB:
+ return getname_ob_ei(icu->adrcode, 0); /* dummy 2nd arg */
case ID_PO:
return getname_ac_ei(icu->adrcode);
+ case ID_KE:
+ {
+ /* quick 'hack' - must find a better solution to this
+ * although shapekey ipo-curves can have names,
+ * we don't have access to that info yet.
+ */
+ static char name[32];
+ sprintf(name, "Key %d", icu->adrcode);
+ return name;
+ }
default: /* fixme - add all of the other types! */
return NULL;