Browse Source

Merge pull request #58559 from fazil47/scene-tree-icon-focus

Double clicking scene tree icon focuses that node
Rémi Verschelde 3 years ago
parent
commit
1b446ebcd4
1 changed files with 14 additions and 1 deletions
  1. 14 1
      scene/gui/tree.cpp

+ 14 - 1
scene/gui/tree.cpp

@@ -3286,8 +3286,21 @@ void Tree::gui_input(const Ref<InputEvent> &p_event) {
 					} else {
 					} else {
 						Rect2 rect = get_selected()->get_meta("__focus_rect");
 						Rect2 rect = get_selected()->get_meta("__focus_rect");
 						Point2 mpos = b->get_position();
 						Point2 mpos = b->get_position();
+						int icon_size_x = 0;
+						Ref<Texture2D> icon = get_selected()->get_icon(selected_col);
+						if (icon.is_valid()) {
+							Rect2i icon_region = get_selected()->get_icon_region(selected_col);
+							if (icon_region == Rect2i()) {
+								icon_size_x = icon->get_width();
+							} else {
+								icon_size_x = icon_region.size.width;
+							}
+						}
+						// Icon is treated as if it is outside of the rect so that double clicking on it will emit the item_double_clicked signal.
 						if (rtl) {
 						if (rtl) {
-							mpos.x = get_size().width - mpos.x;
+							mpos.x = get_size().width - (mpos.x + icon_size_x);
+						} else {
+							mpos.x -= icon_size_x;
 						}
 						}
 						if (rect.has_point(mpos)) {
 						if (rect.has_point(mpos)) {
 							if (!edit_selected()) {
 							if (!edit_selected()) {