diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-02-25 23:02:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-25 23:02:56 +0100 |
commit | 0393057e36e486b2944e6166e6572327944b2fa7 (patch) | |
tree | a8c47351e66bcde9b77f72e9b14fe8757891ae9d /scene/gui/popup_menu.cpp | |
parent | 90d16a32109351dea7684f437436c63cc414f51d (diff) | |
parent | 74ff5921d68ca09942d8988d5a78849b46d8583b (diff) |
Merge pull request #58490 from bruvzg/imporve_popup_menu_handling
Diffstat (limited to 'scene/gui/popup_menu.cpp')
-rw-r--r-- | scene/gui/popup_menu.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp index deca1451ee..af2edfa090 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -205,7 +205,6 @@ void PopupMenu::_activate_submenu(int p_over) { submenu_pos.x = this_pos.x - submenu_size.width; } - submenu_popup->set_close_on_parent_focus(false); submenu_popup->set_position(submenu_pos); PopupMenu *submenu_pum = Object::cast_to<PopupMenu>(submenu_popup); @@ -223,6 +222,11 @@ void PopupMenu::_activate_submenu(int p_over) { // Set autohide areas. + Rect2 safe_area = this_rect; + safe_area.position.y += items[p_over]._ofs_cache + scroll_offset + style->get_offset().height - vsep / 2; + safe_area.size.y = items[p_over]._height_cache; + DisplayServer::get_singleton()->window_set_popup_safe_rect(submenu_popup->get_window_id(), safe_area); + // Make the position of the parent popup relative to submenu popup. this_rect.position = this_rect.position - submenu_pum->get_position(); |