From 4c5a904faf61ff72f170cf89ca3da840dd13d2ba Mon Sep 17 00:00:00 2001 From: Koyper Date: Wed, 24 Apr 2024 10:42:50 -0500 Subject: [PATCH] [PopupMenu] Fix incorrect vertical scroll bar visible at fractional content scale --- scene/gui/popup_menu.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp index 260956a775b..9b991972be8 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -276,6 +276,7 @@ Size2 PopupMenu::_get_contents_minimum_size() const { } } + minsize.height = Math::ceil(minsize.height); // Ensures enough height at fractional content scales to prevent the v_scroll_bar from showing. return minsize; } @@ -2832,9 +2833,9 @@ void PopupMenu::popup(const Rect2i &p_bounds) { if (!is_embedded()) { float win_scale = get_parent_visible_window()->get_content_scale_factor(); set_content_scale_factor(win_scale); - Size2 minsize = get_contents_minimum_size(); - minsize.height += 0.5 * win_scale; // Ensures enough height at fractional content scales to prevent the v_scroll_bar from showing. - set_min_size(minsize * win_scale); + Size2 minsize = get_contents_minimum_size() * win_scale; + minsize.height = Math::ceil(minsize.height); // Ensures enough height at fractional content scales to prevent the v_scroll_bar from showing. + set_min_size(minsize); // `height` is truncated here by the cast to Size2i for Window.min_size. set_size(Vector2(0, 0)); // Shrinkwraps to min size. } Popup::popup(p_bounds);