diff options
author | Philipp Oeser <info@graphics-engineer.com> | 2021-01-07 16:06:43 +0300 |
---|---|---|
committer | Philipp Oeser <info@graphics-engineer.com> | 2021-01-08 13:50:36 +0300 |
commit | c44a17ec4b247b0af5e4c58bbcfca6dece51baf1 (patch) | |
tree | b3a91d8105ef0f685cb3b7bfd401bcff94b9ad87 /source/blender/makesrna/intern/rna_main_api.c | |
parent | 1698678231d20b57ed463d89270913599548ffcb (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/intern/rna_main_api.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_main_api.c | 117 |
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(<->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 |