diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2014-03-24 16:08:29 +0400 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2014-03-24 16:08:29 +0400 |
commit | 07578bed4dec4a63e904fe3f20ca2107a76021fe (patch) | |
tree | ac2e905fb52b582274ca729af31ab146c8a72cc3 /source/blender/editors/space_outliner/outliner_draw.c | |
parent | f8c247f21b8e489750e3847a4a2270c1146cbbc2 (diff) |
Fix T39383: Blender crash when renaming bone in outliner (weight paint mode).
Outliner rename callback is supposed to activate affected element before actually renaming,
but for bones this was not working because the function used to activate the object explicitely
ignored ID_OB case! Added a bool flag to allow handing this case without (possibly) breaking
the other usecases.
Diffstat (limited to 'source/blender/editors/space_outliner/outliner_draw.c')
-rw-r--r-- | source/blender/editors/space_outliner/outliner_draw.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c index d44a3e60a3f..4db63a462e7 100644 --- a/source/blender/editors/space_outliner/outliner_draw.c +++ b/source/blender/editors/space_outliner/outliner_draw.c @@ -481,7 +481,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) char newname[sizeof(bone->name)]; /* always make current object active */ - tree_element_active(C, scene, soops, te, OL_SETSEL_NORMAL); + tree_element_active(C, scene, soops, te, OL_SETSEL_NORMAL, true); ob = OBACT; /* restore bone name */ @@ -498,8 +498,10 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) char newname[sizeof(pchan->name)]; /* always make current pose-bone active */ - tree_element_active(C, scene, soops, te, OL_SETSEL_NORMAL); + tree_element_active(C, scene, soops, te, OL_SETSEL_NORMAL, true); ob = OBACT; + + BLI_assert(ob->type == OB_ARMATURE); /* restore bone name */ BLI_strncpy(newname, pchan->name, sizeof(pchan->name)); @@ -1154,7 +1156,7 @@ static void outliner_draw_iconrow(bContext *C, uiBlock *block, Scene *scene, Spa active = OL_DRAWSEL_NORMAL; } else { - active = tree_element_active(C, scene, soops, te, OL_SETSEL_NONE); + active = tree_element_active(C, scene, soops, te, OL_SETSEL_NONE, false); } } else { @@ -1295,7 +1297,7 @@ static void outliner_draw_tree_element(bContext *C, uiBlock *block, Scene *scene active = OL_DRAWSEL_ACTIVE; } else { - if (tree_element_active(C, scene, soops, te, OL_SETSEL_NONE)) { + if (tree_element_active(C, scene, soops, te, OL_SETSEL_NONE, false)) { glColor4ub(220, 220, 255, alpha); active = OL_DRAWSEL_ACTIVE; } |