diff options
| -rw-r--r-- | editor/plugins/canvas_item_editor_plugin.cpp | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index b678197037..f1c9cb120d 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -804,11 +804,15 @@ void CanvasItemEditor::_find_canvas_items_in_rect(const Rect2 &p_rect, Node *p_n  bool CanvasItemEditor::_select_click_on_item(CanvasItem *item, Point2 p_click_pos, bool p_append) {  	bool still_selected = true; -	if (p_append) { +	if (p_append && !editor_selection->get_selected_node_list().is_empty()) {  		if (editor_selection->is_selected(item)) {  			// Already in the selection, remove it from the selected nodes  			editor_selection->remove_node(item);  			still_selected = false; + +			if (editor_selection->get_selected_node_list().size() == 1) { +				editor->push_item(editor_selection->get_selected_node_list()[0]); +			}  		} else {  			// Add the item to the selection  			editor_selection->add_node(item); @@ -2589,6 +2593,9 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) {  				}  				_find_canvas_items_in_rect(Rect2(bsfrom, bsto - bsfrom), scene, &selitems); +				if (selitems.size() == 1 && editor_selection->get_selected_node_list().is_empty()) { +					editor->push_item(selitems[0]); +				}  				for (List<CanvasItem *>::Element *E = selitems.front(); E; E = E->next()) {  					editor_selection->add_node(E->get());  				}  |