Explorar o código

Fix error when click edge of the tree icon

Tomasz Chabora %!s(int64=5) %!d(string=hai) anos
pai
achega
e1cc70309c
Modificáronse 1 ficheiros con 10 adicións e 1 borrados
  1. 10 1
      scene/gui/tree.cpp

+ 10 - 1
scene/gui/tree.cpp

@@ -2339,13 +2339,22 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, int
 					cache.click_type = Cache::CLICK_NONE;
 					return -1;
 				}
+
+				// Make sure the click is correct.
+				Point2 click_pos = get_global_mouse_position() - get_global_position();
+				if (!get_item_at_position(click_pos)) {
+					pressed_button = -1;
+					cache.click_type = Cache::CLICK_NONE;
+					return -1;
+				}
+
 				pressed_button = j;
 				cache.click_type = Cache::CLICK_BUTTON;
 				cache.click_index = j;
 				cache.click_id = c.buttons[j].id;
 				cache.click_item = p_item;
 				cache.click_column = col;
-				cache.click_pos = get_global_mouse_position() - get_global_position();
+				cache.click_pos = click_pos;
 				update();
 				//emit_signal(SNAME("button_pressed"));
 				return -1;