From 52caedb19ed99ad2851f3ef5820c073ee00e1607 Mon Sep 17 00:00:00 2001 From: Pratik Borhade Date: Fri, 27 Jun 2025 13:43:19 +0200 Subject: [PATCH] Fix #73072: Outliner: Alt click fails to enable toggle on selected objects Alt click works perfect to disable restriction toggle (hide/selection toogle) on selected object tree elements from outliner. But fails when re-enabling them. This is because `screen_ctx_selected_editable_objects` returns a list of selectable bases. When above two restriction toggles are disabled, `selection` flag is cleared from resepective bases. To avoid such situation, handle outliner case separately inside `UI_context_copy_to_selected_list ()`, store list of objects that are selected in outliner (i.e. `TSE_SELECTED` flag is set). Also added few findings as comments in #133459 Pull Request: https://projects.blender.org/blender/blender/pulls/133469 --- source/blender/editors/interface/interface_ops.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/blender/editors/interface/interface_ops.cc b/source/blender/editors/interface/interface_ops.cc index e0cbb73230a..219419b8790 100644 --- a/source/blender/editors/interface/interface_ops.cc +++ b/source/blender/editors/interface/interface_ops.cc @@ -63,6 +63,7 @@ #include "WM_types.hh" #include "ED_object.hh" +#include "ED_outliner.hh" #include "ED_paint.hh" #include "ED_undo.hh" @@ -1268,6 +1269,19 @@ bool UI_context_copy_to_selected_list(bContext *C, *r_lb = lb; *r_path = path; } + else if (CTX_wm_space_outliner(C)) { + const ID *id = ptr->owner_id; + if (!(id && (GS(id->name) == ID_OB))) { + return false; + } + + ListBase selected_objects = {nullptr}; + ED_outliner_selected_objects_get(C, &selected_objects); + LISTBASE_FOREACH (LinkData *, link, &selected_objects) { + Object *ob = static_cast(link->data); + r_lb->append(RNA_id_pointer_create(&ob->id)); + } + } else if (ptr->owner_id) { ID *id = ptr->owner_id;