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:
authorPhilipp Oeser <info@graphics-engineer.com>2021-01-07 16:06:43 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2021-01-08 13:50:36 +0300
commitc44a17ec4b247b0af5e4c58bbcfca6dece51baf1 (patch)
treeb3a91d8105ef0f685cb3b7bfd401bcff94b9ad87 /source/blender/makesrna
parent1698678231d20b57ed463d89270913599548ffcb (diff)
Fix T84475: Outliner missing update when adding IDs to main via RNA
Was reported for meshes, but was true for any type. Now add appropriate notifier to refresh the Outliner. Maniphest Tasks: T84475 Differential Revision: https://developer.blender.org/D10030
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r--source/blender/makesrna/intern/rna_main_api.c117
1 files changed, 112 insertions, 5 deletions
diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c
index 564acaec90a..5170d598ab5 100644
--- a/source/blender/makesrna/intern/rna_main_api.c
+++ b/source/blender/makesrna/intern/rna_main_api.c
@@ -172,6 +172,9 @@ static Camera *rna_Main_cameras_new(Main *bmain, const char *name)
ID *id = BKE_camera_add(bmain, safe_name);
id_us_min(id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return (Camera *)id;
}
@@ -180,7 +183,11 @@ static Scene *rna_Main_scenes_new(Main *bmain, const char *name)
char safe_name[MAX_ID_NAME - 2];
rna_idname_validate(name, safe_name);
- return BKE_scene_add(bmain, safe_name);
+ Scene *scene = BKE_scene_add(bmain, safe_name);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
+ return scene;
}
static void rna_Main_scenes_remove(
Main *bmain, bContext *C, ReportList *reports, PointerRNA *scene_ptr, bool do_unlink)
@@ -249,6 +256,8 @@ static Object *rna_Main_objects_new(Main *bmain, ReportList *reports, const char
ob->data = data;
BKE_object_materials_test(bmain, ob, ob->data);
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return ob;
}
@@ -259,6 +268,9 @@ static Material *rna_Main_materials_new(Main *bmain, const char *name)
ID *id = (ID *)BKE_material_add(bmain, safe_name);
id_us_min(id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return (Material *)id;
}
@@ -309,6 +321,9 @@ static Mesh *rna_Main_meshes_new(Main *bmain, const char *name)
Mesh *me = BKE_mesh_add(bmain, safe_name);
id_us_min(&me->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return me;
}
@@ -331,7 +346,12 @@ static Mesh *rna_Main_meshes_new_from_object(Main *bmain,
return NULL;
}
- return BKE_mesh_new_from_object_to_bmain(bmain, depsgraph, object, preserve_all_data_layers);
+ Mesh *mesh = BKE_mesh_new_from_object_to_bmain(
+ bmain, depsgraph, object, preserve_all_data_layers);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
+ return mesh;
}
static Light *rna_Main_lights_new(Main *bmain, const char *name, int type)
@@ -342,6 +362,9 @@ static Light *rna_Main_lights_new(Main *bmain, const char *name, int type)
Light *lamp = BKE_light_add(bmain, safe_name);
lamp->type = type;
id_us_min(&lamp->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return lamp;
}
@@ -371,6 +394,9 @@ static Image *rna_Main_images_new(Main *bmain,
is_data,
tiled);
id_us_min(&image->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return image;
}
static Image *rna_Main_images_load(Main *bmain,
@@ -397,6 +423,9 @@ static Image *rna_Main_images_load(Main *bmain,
}
id_us_min((ID *)ima);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return ima;
}
@@ -407,6 +436,9 @@ static Lattice *rna_Main_lattices_new(Main *bmain, const char *name)
Lattice *lt = BKE_lattice_add(bmain, safe_name);
id_us_min(&lt->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return lt;
}
@@ -417,6 +449,9 @@ static Curve *rna_Main_curves_new(Main *bmain, const char *name, int type)
Curve *cu = BKE_curve_add(bmain, safe_name, type);
id_us_min(&cu->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return cu;
}
@@ -427,6 +462,9 @@ static MetaBall *rna_Main_metaballs_new(Main *bmain, const char *name)
MetaBall *mb = BKE_mball_add(bmain, safe_name);
id_us_min(&mb->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return mb;
}
@@ -452,6 +490,9 @@ static VFont *rna_Main_fonts_load(Main *bmain,
filepath,
errno ? strerror(errno) : TIP_("unsupported font format"));
}
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return font;
}
@@ -463,6 +504,9 @@ static Tex *rna_Main_textures_new(Main *bmain, const char *name, int type)
Tex *tex = BKE_texture_add(bmain, safe_name);
BKE_texture_type_set(tex, type);
id_us_min(&tex->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return tex;
}
@@ -473,6 +517,9 @@ static Brush *rna_Main_brushes_new(Main *bmain, const char *name, int mode)
Brush *brush = BKE_brush_add(bmain, safe_name, mode);
id_us_min(&brush->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return brush;
}
@@ -490,6 +537,9 @@ static World *rna_Main_worlds_new(Main *bmain, const char *name)
World *world = BKE_world_add(bmain, safe_name);
id_us_min(&world->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return world;
}
@@ -498,7 +548,11 @@ static Collection *rna_Main_collections_new(Main *bmain, const char *name)
char safe_name[MAX_ID_NAME - 2];
rna_idname_validate(name, safe_name);
- return BKE_collection_add(bmain, NULL, safe_name);
+ Collection *collection = BKE_collection_add(bmain, NULL, safe_name);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
+ return collection;
}
static Speaker *rna_Main_speakers_new(Main *bmain, const char *name)
@@ -508,6 +562,9 @@ static Speaker *rna_Main_speakers_new(Main *bmain, const char *name)
Speaker *speaker = BKE_speaker_add(bmain, safe_name);
id_us_min(&speaker->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return speaker;
}
@@ -523,6 +580,9 @@ static bSound *rna_Main_sounds_load(Main *bmain, const char *name, bool check_ex
}
id_us_min(&sound->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return sound;
}
@@ -531,7 +591,11 @@ static Text *rna_Main_texts_new(Main *bmain, const char *name)
char safe_name[MAX_ID_NAME - 2];
rna_idname_validate(name, safe_name);
- return BKE_text_add(bmain, safe_name);
+ Text *text = BKE_text_add(bmain, safe_name);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
+ return text;
}
static Text *rna_Main_texts_load(Main *bmain,
@@ -551,6 +615,9 @@ static Text *rna_Main_texts_load(Main *bmain,
filepath,
errno ? strerror(errno) : TIP_("unable to load text"));
}
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return txt;
}
@@ -561,6 +628,9 @@ static bArmature *rna_Main_armatures_new(Main *bmain, const char *name)
bArmature *arm = BKE_armature_add(bmain, safe_name);
id_us_min(&arm->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return arm;
}
@@ -571,6 +641,9 @@ static bAction *rna_Main_actions_new(Main *bmain, const char *name)
bAction *act = BKE_action_add(bmain, safe_name);
id_fake_user_clear(&act->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return act;
}
@@ -581,6 +654,9 @@ static ParticleSettings *rna_Main_particles_new(Main *bmain, const char *name)
ParticleSettings *part = BKE_particlesettings_add(bmain, safe_name);
id_us_min(&part->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return part;
}
@@ -591,6 +667,9 @@ static Palette *rna_Main_palettes_new(Main *bmain, const char *name)
Palette *palette = BKE_palette_add(bmain, safe_name);
id_us_min(&palette->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return (Palette *)palette;
}
@@ -622,6 +701,9 @@ static MovieClip *rna_Main_movieclip_load(Main *bmain,
}
id_us_min((ID *)clip);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return clip;
}
@@ -630,7 +712,11 @@ static Mask *rna_Main_mask_new(Main *bmain, const char *name)
char safe_name[MAX_ID_NAME - 2];
rna_idname_validate(name, safe_name);
- return BKE_mask_new(bmain, safe_name);
+ Mask *mask = BKE_mask_new(bmain, safe_name);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
+ return mask;
}
static FreestyleLineStyle *rna_Main_linestyles_new(Main *bmain, const char *name)
@@ -640,6 +726,9 @@ static FreestyleLineStyle *rna_Main_linestyles_new(Main *bmain, const char *name
FreestyleLineStyle *linestyle = BKE_linestyle_new(bmain, safe_name);
id_us_min(&linestyle->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return linestyle;
}
@@ -653,6 +742,9 @@ static LightProbe *rna_Main_lightprobe_new(Main *bmain, const char *name, int ty
BKE_lightprobe_type_set(probe, type);
id_us_min(&probe->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return probe;
}
@@ -663,6 +755,9 @@ static bGPdata *rna_Main_gpencils_new(Main *bmain, const char *name)
bGPdata *gpd = BKE_gpencil_data_addnew(bmain, safe_name);
id_us_min(&gpd->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return gpd;
}
@@ -674,6 +769,9 @@ static Hair *rna_Main_hairs_new(Main *bmain, const char *name)
Hair *hair = BKE_hair_add(bmain, safe_name);
id_us_min(&hair->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return hair;
}
# endif
@@ -686,6 +784,9 @@ static PointCloud *rna_Main_pointclouds_new(Main *bmain, const char *name)
PointCloud *pointcloud = BKE_pointcloud_add(bmain, safe_name);
id_us_min(&pointcloud->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return pointcloud;
}
# endif
@@ -697,6 +798,9 @@ static Volume *rna_Main_volumes_new(Main *bmain, const char *name)
Volume *volume = BKE_volume_add(bmain, safe_name);
id_us_min(&volume->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return volume;
}
@@ -708,6 +812,9 @@ static Simulation *rna_Main_simulations_new(Main *bmain, const char *name)
Simulation *simulation = BKE_simulation_add(bmain, safe_name);
id_us_min(&simulation->id);
+
+ WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+
return simulation;
}
# endif