diff options
Diffstat (limited to 'source/blender/editors/space_outliner/outliner_collections.c')
-rw-r--r-- | source/blender/editors/space_outliner/outliner_collections.c | 159 |
1 files changed, 102 insertions, 57 deletions
diff --git a/source/blender/editors/space_outliner/outliner_collections.c b/source/blender/editors/space_outliner/outliner_collections.c index 0964e0c753e..efb91528e14 100644 --- a/source/blender/editors/space_outliner/outliner_collections.c +++ b/source/blender/editors/space_outliner/outliner_collections.c @@ -142,10 +142,14 @@ TreeTraversalAction outliner_find_selected_objects(TreeElement *te, void *custom */ void ED_outliner_selected_objects_get(const bContext *C, ListBase *objects) { - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); struct IDsSelectedData data = {{NULL}}; - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, outliner_find_selected_objects, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + outliner_find_selected_objects, + &data); LISTBASE_FOREACH (LinkData *, link, &data.selected_array) { TreeElement *ten_selected = (TreeElement *)link->data; Object *ob = (Object *)TREESTORE(ten_selected)->id; @@ -162,14 +166,15 @@ void ED_outliner_selected_objects_get(const bContext *C, ListBase *objects) bool ED_outliner_collections_editor_poll(bContext *C) { - SpaceOutliner *so = CTX_wm_space_outliner(C); - return (so != NULL) && ELEM(so->outlinevis, SO_VIEW_LAYER, SO_SCENES, SO_LIBRARIES); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); + return (space_outliner != NULL) && + ELEM(space_outliner->outlinevis, SO_VIEW_LAYER, SO_SCENES, SO_LIBRARIES); } static bool outliner_view_layer_collections_editor_poll(bContext *C) { - SpaceOutliner *so = CTX_wm_space_outliner(C); - return (so != NULL) && (so->outlinevis == SO_VIEW_LAYER); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); + return (space_outliner != NULL) && (space_outliner->outlinevis == SO_VIEW_LAYER); } /** \} */ @@ -203,7 +208,7 @@ static TreeTraversalAction collection_find_selected_to_add(TreeElement *te, void static int collection_new_exec(bContext *C, wmOperator *op) { - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); ARegion *region = CTX_wm_region(C); Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); @@ -215,10 +220,14 @@ static int collection_new_exec(bContext *C, wmOperator *op) }; if (RNA_boolean_get(op->ptr, "nested")) { - outliner_build_tree(bmain, scene, view_layer, soops, region); + outliner_build_tree(bmain, scene, view_layer, space_outliner, region); - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, collection_find_selected_to_add, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + collection_find_selected_to_add, + &data); if (data.error) { BKE_report(op->reports, RPT_ERROR, "More than one collection is selected"); @@ -240,7 +249,7 @@ static int collection_new_exec(bContext *C, wmOperator *op) DEG_id_tag_update(&data.collection->id, ID_RECALC_COPY_ON_WRITE); DEG_relations_tag_update(bmain); - outliner_cleanup_tree(soops); + outliner_cleanup_tree(space_outliner); WM_main_add_notifier(NC_SCENE | ND_LAYER, NULL); return OPERATOR_FINISHED; } @@ -273,7 +282,7 @@ void OUTLINER_OT_collection_new(wmOperatorType *ot) struct CollectionEditData { Scene *scene; - SpaceOutliner *soops; + SpaceOutliner *space_outliner; GSet *collections_to_edit; }; @@ -303,11 +312,11 @@ static TreeTraversalAction collection_find_data_to_edit(TreeElement *te, void *c void outliner_collection_delete( bContext *C, Main *bmain, Scene *scene, ReportList *reports, bool hierarchy) { - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); struct CollectionEditData data = { .scene = scene, - .soops = soops, + .space_outliner = space_outliner, }; data.collections_to_edit = BLI_gset_ptr_new(__func__); @@ -315,7 +324,7 @@ void outliner_collection_delete( /* We first walk over and find the Collections we actually want to delete * (ignoring duplicates). */ outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, collection_find_data_to_edit, &data); + space_outliner, &space_outliner->tree, 0, TSE_SELECTED, collection_find_data_to_edit, &data); /* Effectively delete the collections. */ GSetIterator collections_to_edit_iter; @@ -436,14 +445,18 @@ static TreeTraversalAction outliner_find_first_selected_layer_collection(TreeEle static LayerCollection *outliner_active_layer_collection(bContext *C) { - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); struct CollectionObjectsSelectData data = { .layer_collection = NULL, }; - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, outliner_find_first_selected_layer_collection, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + outliner_find_first_selected_layer_collection, + &data); return data.layer_collection; } @@ -527,14 +540,18 @@ static TreeTraversalAction outliner_find_first_selected_collection(TreeElement * static TreeElement *outliner_active_collection(bContext *C) { - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); struct CollectionDuplicateData data = { .te = NULL, }; - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, outliner_find_first_selected_collection, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + outliner_find_first_selected_collection, + &data); return data.te; } @@ -635,10 +652,10 @@ static int collection_link_exec(bContext *C, wmOperator *op) Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); Collection *active_collection = CTX_data_layer_collection(C)->collection; - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); struct CollectionEditData data = { .scene = scene, - .soops = soops, + .space_outliner = space_outliner, }; if (ID_IS_LINKED(active_collection) || @@ -651,7 +668,7 @@ static int collection_link_exec(bContext *C, wmOperator *op) /* We first walk over and find the Collections we actually want to link (ignoring duplicates). */ outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, collection_find_data_to_edit, &data); + space_outliner, &space_outliner->tree, 0, TSE_SELECTED, collection_find_data_to_edit, &data); /* Effectively link the collections. */ GSetIterator collections_to_edit_iter; @@ -697,10 +714,10 @@ static int collection_instance_exec(bContext *C, wmOperator *UNUSED(op)) Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); ViewLayer *view_layer = CTX_data_view_layer(C); - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); struct CollectionEditData data = { .scene = scene, - .soops = soops, + .space_outliner = space_outliner, }; data.collections_to_edit = BLI_gset_ptr_new(__func__); @@ -708,7 +725,7 @@ static int collection_instance_exec(bContext *C, wmOperator *UNUSED(op)) /* We first walk over and find the Collections we actually want to instance * (ignoring duplicates). */ outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, collection_find_data_to_edit, &data); + space_outliner, &space_outliner->tree, 0, TSE_SELECTED, collection_find_data_to_edit, &data); /* Find an active collection to add to, that doesn't give dependency cycles. */ LayerCollection *active_lc = BKE_layer_collection_get_active(view_layer); @@ -790,21 +807,25 @@ static TreeTraversalAction layer_collection_find_data_to_edit(TreeElement *te, v static bool collections_view_layer_poll(bContext *C, bool clear, int flag) { /* Poll function so the right click menu show current state of selected collections. */ - SpaceOutliner *soops = CTX_wm_space_outliner(C); - if (!(soops && soops->outlinevis == SO_VIEW_LAYER)) { + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); + if (!(space_outliner && space_outliner->outlinevis == SO_VIEW_LAYER)) { return false; } Scene *scene = CTX_data_scene(C); struct CollectionEditData data = { .scene = scene, - .soops = soops, + .space_outliner = space_outliner, }; data.collections_to_edit = BLI_gset_ptr_new(__func__); bool result = false; - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, layer_collection_find_data_to_edit, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + layer_collection_find_data_to_edit, + &data); GSetIterator collections_to_edit_iter; GSET_ITER (collections_to_edit_iter, data.collections_to_edit) { @@ -857,10 +878,10 @@ static int collection_view_layer_exec(bContext *C, wmOperator *op) Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); ViewLayer *view_layer = CTX_data_view_layer(C); - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); struct CollectionEditData data = { .scene = scene, - .soops = soops, + .space_outliner = space_outliner, }; bool clear = strstr(op->idname, "clear") != NULL; int flag = strstr(op->idname, "holdout") ? @@ -870,8 +891,12 @@ static int collection_view_layer_exec(bContext *C, wmOperator *op) data.collections_to_edit = BLI_gset_ptr_new(__func__); - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, layer_collection_find_data_to_edit, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + layer_collection_find_data_to_edit, + &data); GSetIterator collections_to_edit_iter; GSET_ITER (collections_to_edit_iter, data.collections_to_edit) { @@ -991,15 +1016,19 @@ static int collection_isolate_exec(bContext *C, wmOperator *op) { Scene *scene = CTX_data_scene(C); ViewLayer *view_layer = CTX_data_view_layer(C); - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); const bool extend = RNA_boolean_get(op->ptr, "extend"); struct CollectionEditData data = { .scene = scene, - .soops = soops, + .space_outliner = space_outliner, }; data.collections_to_edit = BLI_gset_ptr_new(__func__); - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, layer_collection_find_data_to_edit, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + layer_collection_find_data_to_edit, + &data); GSetIterator collections_to_edit_iter; GSET_ITER (collections_to_edit_iter, data.collections_to_edit) { @@ -1083,17 +1112,21 @@ static int collection_visibility_exec(bContext *C, wmOperator *op) { Scene *scene = CTX_data_scene(C); ViewLayer *view_layer = CTX_data_view_layer(C); - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); const bool is_inside = strstr(op->idname, "inside") != NULL; const bool show = strstr(op->idname, "show") != NULL; struct CollectionEditData data = { .scene = scene, - .soops = soops, + .space_outliner = space_outliner, }; data.collections_to_edit = BLI_gset_ptr_new(__func__); - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, layer_collection_find_data_to_edit, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + layer_collection_find_data_to_edit, + &data); GSetIterator collections_to_edit_iter; GSET_ITER (collections_to_edit_iter, data.collections_to_edit) { @@ -1225,20 +1258,24 @@ static int collection_flag_exec(bContext *C, wmOperator *op) { Scene *scene = CTX_data_scene(C); ViewLayer *view_layer = CTX_data_view_layer(C); - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); const bool is_render = strstr(op->idname, "render"); const bool clear = strstr(op->idname, "show") || strstr(op->idname, "enable"); int flag = is_render ? COLLECTION_RESTRICT_RENDER : COLLECTION_RESTRICT_VIEWPORT; struct CollectionEditData data = { .scene = scene, - .soops = soops, + .space_outliner = space_outliner, }; data.collections_to_edit = BLI_gset_ptr_new(__func__); - const bool has_layer_collection = soops->outlinevis == SO_VIEW_LAYER; + const bool has_layer_collection = space_outliner->outlinevis == SO_VIEW_LAYER; if (has_layer_collection) { - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, layer_collection_find_data_to_edit, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + layer_collection_find_data_to_edit, + &data); GSetIterator collections_to_edit_iter; GSET_ITER (collections_to_edit_iter, data.collections_to_edit) { LayerCollection *layer_collection = BLI_gsetIterator_getKey(&collections_to_edit_iter); @@ -1261,8 +1298,12 @@ static int collection_flag_exec(bContext *C, wmOperator *op) BLI_gset_free(data.collections_to_edit, NULL); } else { - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, collection_find_data_to_edit, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + collection_find_data_to_edit, + &data); GSetIterator collections_to_edit_iter; GSET_ITER (collections_to_edit_iter, data.collections_to_edit) { Collection *collection = BLI_gsetIterator_getKey(&collections_to_edit_iter); @@ -1351,7 +1392,7 @@ void OUTLINER_OT_collection_disable_render(wmOperatorType *ot) struct OutlinerHideEditData { Scene *scene; ViewLayer *view_layer; - SpaceOutliner *soops; + SpaceOutliner *space_outliner; GSet *collections_to_edit; GSet *bases_to_edit; }; @@ -1397,17 +1438,21 @@ static int outliner_hide_exec(bContext *C, wmOperator *UNUSED(op)) { Scene *scene = CTX_data_scene(C); ViewLayer *view_layer = CTX_data_view_layer(C); - SpaceOutliner *soops = CTX_wm_space_outliner(C); + SpaceOutliner *space_outliner = CTX_wm_space_outliner(C); struct OutlinerHideEditData data = { .scene = scene, .view_layer = view_layer, - .soops = soops, + .space_outliner = space_outliner, }; data.collections_to_edit = BLI_gset_ptr_new("outliner_hide_exec__collections_to_edit"); data.bases_to_edit = BLI_gset_ptr_new("outliner_hide_exec__bases_to_edit"); - outliner_tree_traverse( - soops, &soops->tree, 0, TSE_SELECTED, outliner_hide_find_data_to_edit, &data); + outliner_tree_traverse(space_outliner, + &space_outliner->tree, + 0, + TSE_SELECTED, + outliner_hide_find_data_to_edit, + &data); GSetIterator collections_to_edit_iter; GSET_ITER (collections_to_edit_iter, data.collections_to_edit) { |