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:
authorAntony Riakiotakis <kalast@gmail.com>2015-06-11 20:34:21 +0300
committerAntony Riakiotakis <kalast@gmail.com>2015-06-11 20:34:21 +0300
commit5114637967b5d57de9176a01e5c180bab909dd63 (patch)
tree8bf5b66ce97411ae2a343cf1a9cc36da6b967fad
parent8c2619a11a155ecd8c331eb383a9c0749bb965ab (diff)
Fix T45016, mask animation data lost after layer rename
We need to fix up animation data.
-rw-r--r--source/blender/blenkernel/BKE_mask.h1
-rw-r--r--source/blender/blenkernel/intern/mask.c11
-rw-r--r--source/blender/makesrna/intern/rna_mask.c7
3 files changed, 17 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_mask.h b/source/blender/blenkernel/BKE_mask.h
index 3db4d9e7324..2f85db4d5d2 100644
--- a/source/blender/blenkernel/BKE_mask.h
+++ b/source/blender/blenkernel/BKE_mask.h
@@ -79,6 +79,7 @@ struct MaskSpline *BKE_mask_spline_copy(struct MaskSpline *spline);
void BKE_mask_point_free(struct MaskSplinePoint *point);
void BKE_mask_layer_unique_name(struct Mask *mask, struct MaskLayer *masklay);
+void BKE_mask_layer_rename(struct Mask *mask, struct MaskLayer *masklay, char *oldname, char *newname);
struct MaskLayer *BKE_mask_layer_copy(struct MaskLayer *layer);
void BKE_mask_layer_copy_list(struct ListBase *masklayers_new, struct ListBase *masklayers);
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index 83ca6cd8d72..dd179ff91d2 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -49,6 +49,7 @@
#include "DNA_space_types.h"
#include "DNA_sequence_types.h"
+#include "BKE_animsys.h"
#include "BKE_curve.h"
#include "BKE_global.h"
#include "BKE_library.h"
@@ -181,6 +182,16 @@ void BKE_mask_layer_unique_name(Mask *mask, MaskLayer *masklay)
sizeof(masklay->name));
}
+void BKE_mask_layer_rename(Mask *mask, MaskLayer *masklay, char *oldname, char *newname)
+{
+ BLI_strncpy(masklay->name, newname, sizeof(masklay->name));
+
+ BKE_mask_layer_unique_name(mask, masklay);
+
+ /* now fix animation paths */
+ BKE_animdata_fix_paths_rename_all(&mask->id, "layers", oldname, masklay->name);
+}
+
MaskLayer *BKE_mask_layer_copy(MaskLayer *masklay)
{
MaskLayer *masklay_new;
diff --git a/source/blender/makesrna/intern/rna_mask.c b/source/blender/makesrna/intern/rna_mask.c
index afd149a755a..4144872a637 100644
--- a/source/blender/makesrna/intern/rna_mask.c
+++ b/source/blender/makesrna/intern/rna_mask.c
@@ -213,10 +213,13 @@ static void rna_MaskLayer_name_set(PointerRNA *ptr, const char *value)
{
Mask *mask = (Mask *)ptr->id.data;
MaskLayer *masklay = (MaskLayer *)ptr->data;
+ char oldname[sizeof(masklay->name)], newname[sizeof(masklay->name)];
- BLI_strncpy(masklay->name, value, sizeof(masklay->name));
+ /* need to be on the stack */
+ BLI_strncpy(oldname, masklay->name, sizeof(masklay->name));
+ BLI_strncpy_utf8(newname, value, sizeof(masklay->name));
- BKE_mask_layer_unique_name(mask, masklay);
+ BKE_mask_layer_rename(mask, masklay, oldname, newname);
}
static PointerRNA rna_MaskLayer_active_spline_get(PointerRNA *ptr)