From efc2ecc04cab2c60630b4dcb6ab7507bc49e160d Mon Sep 17 00:00:00 2001 From: Michael Alexsander Date: Fri, 4 Jul 2025 20:38:15 -0300 Subject: [PATCH] Fix remote deselection not working when selection limit is reached --- scene/debugger/scene_debugger.cpp | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/scene/debugger/scene_debugger.cpp b/scene/debugger/scene_debugger.cpp index 2e7abcf7549..dc6157c74fe 100644 --- a/scene/debugger/scene_debugger.cpp +++ b/scene/debugger/scene_debugger.cpp @@ -1922,18 +1922,6 @@ void RuntimeNodeSelect::_send_ids(const Vector &p_picked_nodes, bool p_i return; } - int limit = max_selection - selected_ci_nodes.size(); -#ifndef _3D_DISABLED - limit -= selected_3d_nodes.size(); -#endif // _3D_DISABLED - if (limit <= 0) { - return; - } - if (picked_nodes.size() > limit) { - picked_nodes.resize(limit); - EngineDebugger::get_singleton()->send_message("show_selection_limit_warning", Array()); - } - LocalVector nodes; LocalVector ids; for (Node *node : picked_nodes) { @@ -1963,6 +1951,16 @@ void RuntimeNodeSelect::_send_ids(const Vector &p_picked_nodes, bool p_i } } + uint32_t limit = max_selection - selected_ci_nodes.size(); +#ifndef _3D_DISABLED + limit -= selected_3d_nodes.size(); +#endif // _3D_DISABLED + if (ids.size() > limit) { + ids.resize(limit); + nodes.resize(limit); + EngineDebugger::get_singleton()->send_message("show_selection_limit_warning", Array()); + } + for (ObjectID id : selected_ci_nodes) { ids.push_back(id); nodes.push_back(ObjectDB::get_instance(id)); @@ -1974,11 +1972,6 @@ void RuntimeNodeSelect::_send_ids(const Vector &p_picked_nodes, bool p_i } #endif // _3D_DISABLED - if (ids.size() > (unsigned)max_selection) { - ids.resize(max_selection); - EngineDebugger::get_singleton()->send_message("show_selection_limit_warning", Array()); - } - if (ids.is_empty()) { EngineDebugger::get_singleton()->send_message("remote_nothing_selected", message); } else {