Browse Source

[PopupMenu] Fix incorrect vertical scroll bar visible at fractional content scale

Koyper 1 year ago
parent
commit
4c5a904faf
1 changed files with 4 additions and 3 deletions
  1. 4 3
      scene/gui/popup_menu.cpp

+ 4 - 3
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);