summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorTomasz Chabora <kobewi4e@gmail.com>2020-01-15 21:54:52 +0100
committerkobewi <kobewi4e@gmail.com>2021-09-13 18:03:03 +0200
commite1cc70309c40dbb346208d2873269381b560ac8c (patch)
treef1a409d91128d6c4a62fb19d6362e657994cb8e1 /scene
parent8ecc571158aa1725cda03e357386daa0bc1de6d3 (diff)
Fix error when click edge of the tree icon
Diffstat (limited to 'scene')
-rw-r--r--scene/gui/tree.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index cb990892ed..c4dfbc0d4e 100644
--- a/scene/gui/tree.cpp
+++ b/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;