From 658719a205bfcfbf07d453e426aceb43ce480540 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Fri, 7 Aug 2020 10:11:10 +0200 Subject: [PATCH] gtk/window: Fix min size calculation It should always use "preferred" size, not any remembered or otherwise computed one, otherwise we won't be able to shrink to the preferred size. --- gtk/gtkwindow.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index e22f2e2bfd..b228b7630b 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -4272,26 +4272,26 @@ toplevel_compute_size (GdkToplevel *toplevel, GtkWindowGeometryInfo *info; int width, height; GtkBorder shadow; + int bounds_width, bounds_height; + int default_width, default_height; int min_width, min_height; info = gtk_window_get_geometry_info (window, FALSE); + gdk_toplevel_size_get_bounds (size, &bounds_width, &bounds_height); + + gtk_window_compute_default_size (window, + bounds_width, bounds_height, + &default_width, &default_height); + if (priv->need_default_size) { int remembered_width; int remembered_height; - int bounds_width; - int bounds_height; - - gdk_toplevel_size_get_bounds (size, &bounds_width, &bounds_height); - - gtk_window_compute_default_size (window, - bounds_width, bounds_height, - &width, &height); gtk_window_get_remembered_size (window, &remembered_width, &remembered_height); - width = MAX (width, remembered_width); - height = MAX (height, remembered_height); + width = MAX (default_width, remembered_width); + height = MAX (default_height, remembered_height); /* Override with default size */ if (info) @@ -4306,9 +4306,9 @@ toplevel_compute_size (GdkToplevel *toplevel, INCLUDE_CSD_SIZE); if (info->default_width > 0) - width = default_width_csd; + width = min_width = default_width_csd; if (info->default_height > 0) - height = default_height_csd; + height = min_height = default_height_csd; } } else @@ -4348,8 +4348,8 @@ toplevel_compute_size (GdkToplevel *toplevel, get_shadow_width (window, &shadow); - min_width = width + shadow.left + shadow.right; - min_height = height + shadow.top + shadow.bottom; + min_width = default_width + shadow.left + shadow.right; + min_height = default_height + shadow.top + shadow.bottom; gdk_toplevel_size_set_min_size (size, min_width, min_height); }