|
@@ -520,8 +520,17 @@ void CanvasItemEditor::_get_canvas_items_at_pos(const Point2 &p_pos, Vector<_Sel
|
|
|
node = node->get_parent();
|
|
|
}
|
|
|
|
|
|
+ // Check if the canvas item is already in the list (for groups or scenes)
|
|
|
+ bool duplicate = false;
|
|
|
+ for (int j = 0; j < i; j++) {
|
|
|
+ if (r_items[j].item == canvas_item) {
|
|
|
+ duplicate = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//Remove the item if invalid
|
|
|
- if (!canvas_item || (canvas_item != scene && canvas_item->get_owner() != scene && !scene->is_editable_instance(canvas_item->get_owner())) || (canvas_item->has_meta("_edit_lock_") && canvas_item->get_meta("_edit_lock_"))) {
|
|
|
+ if (!canvas_item || duplicate || (canvas_item != scene && canvas_item->get_owner() != scene && !scene->is_editable_instance(canvas_item->get_owner())) || (canvas_item->has_meta("_edit_lock_") && canvas_item->get_meta("_edit_lock_"))) {
|
|
|
r_items.remove(i);
|
|
|
i--;
|
|
|
} else {
|