[Bf-blender-cvs] [18684e546f] blender2.8: Outliner: Make sure collection name is unique after renaming

Julian Eisel noreply at git.blender.org
Wed Mar 1 16:34:34 CET 2017


Commit: 18684e546f25feefa5a696b786e74fd63b590d10
Author: Julian Eisel
Date:   Wed Mar 1 16:32:13 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB18684e546f25feefa5a696b786e74fd63b590d10

Outliner: Make sure collection name is unique after renaming

===================================================================

M	source/blender/blenkernel/BKE_collection.h
M	source/blender/blenkernel/intern/collection.c
M	source/blender/editors/space_outliner/outliner_draw.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_collection.h b/source/blender/blenkernel/BKE_collection.h
index 644bcef622..45014b801b 100644
--- a/source/blender/blenkernel/BKE_collection.h
+++ b/source/blender/blenkernel/BKE_collection.h
@@ -45,6 +45,7 @@ struct Scene;
 struct SceneCollection *BKE_collection_add(struct Scene *scene, struct SceneCollection *sc_parent, const char *name);
 bool BKE_collection_remove(struct Scene *scene, struct SceneCollection *sc);
 struct SceneCollection *BKE_collection_master(const struct Scene *scene);
+void BKE_collection_rename(const struct Scene *scene, struct SceneCollection *sc, const char *name);
 void BKE_collection_master_free(struct Scene *scene);
 void BKE_collection_object_add(struct Scene *scene, struct SceneCollection *sc, struct Object *object);
 void BKE_collection_object_add_from(struct Scene *scene, struct Object *ob_src, struct Object *ob_dst);
diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c
index 18af75771c..b9a554f181 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -62,9 +62,7 @@ SceneCollection *BKE_collection_add(Scene *scene, SceneCollection *sc_parent, co
 		sc_parent = sc_master;
 	}
 
-	BLI_strncpy(sc->name, name, sizeof(sc->name));
-	BLI_uniquename(&sc_master->scene_collections, sc, DATA_("Collection"), '.', offsetof(SceneCollection, name), sizeof(sc->name));
-
+	BKE_collection_rename(scene, sc, name);
 	BLI_addtail(&sc_parent->scene_collections, sc);
 
 	BKE_layer_sync_new_scene_collection(scene, sc_parent, sc);
@@ -181,6 +179,15 @@ SceneCollection *BKE_collection_master(const Scene *scene)
 	return scene->collection;
 }
 
+void BKE_collection_rename(const Scene *scene, SceneCollection *sc, const char *name)
+{
+	SceneCollection *sc_master = BKE_collection_master(scene);
+
+	BLI_strncpy(sc->name, name, sizeof(sc->name));
+	BLI_uniquename(&sc_master->scene_collections, sc, DATA_("Collection"), '.', offsetof(SceneCollection, name),
+	               sizeof(sc->name));
+}
+
 /**
  * Free (or release) any data used by the master collection (does not free the master collection itself).
  * Used only to clear the entire scene data since it's not doing re-syncing of the LayerCollection tree
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c
index cc5afd5149..990ad296bb 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -421,6 +421,13 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname)
 				}
 				case TSE_R_LAYER:
 					break;
+				case TSE_SCENE_COLLECTION:
+				case TSE_LAYER_COLLECTION:
+				{
+					SceneCollection *sc = outliner_scene_collection_from_tree_element(te);
+					BKE_collection_rename(scene, sc, te->name);
+					break;
+				}
 			}
 		}
 		tselem->flag &= ~TSE_TEXTBUT;




More information about the Bf-blender-cvs mailing list