Merge pull request #41689 from nathanfranke/fix-popupmenu-unresponsive

Fix PopupMenu unresponsive on right side of menu
This commit is contained in:
Rémi Verschelde 2020-09-04 13:53:37 +02:00 committed by GitHub
commit 21da779aee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -282,14 +282,15 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
}
// Make an area which does not include v scrollbar, so that items are not activated when dragging scrollbar.
Rect2 item_clickable_area = control->get_global_rect();
float scroll_width = scroll_container->get_v_scrollbar()->is_visible_in_tree() ? scroll_container->get_v_scrollbar()->get_size().width : 0;
item_clickable_area.set_size(Size2(item_clickable_area.size.width - scroll_width, item_clickable_area.size.height));
Rect2 item_clickable_area = scroll_container->get_rect();
if (scroll_container->get_v_scrollbar()->is_visible_in_tree()) {
item_clickable_area.size.width -= scroll_container->get_v_scrollbar()->get_size().width;
}
Ref<InputEventMouseButton> b = p_event;
if (b.is_valid()) {
if (!item_clickable_area.has_point(b->get_global_position())) {
if (!item_clickable_area.has_point(b->get_position())) {
return;
}
@ -331,7 +332,7 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
Ref<InputEventMouseMotion> m = p_event;
if (m.is_valid()) {
if (!item_clickable_area.has_point(m->get_global_position())) {
if (!item_clickable_area.has_point(m->get_position())) {
return;
}