mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-17 06:10:15 +00:00
window: Split out a function
We don't want to remember sizes in the not resizable case. Also a function named "guess_default_size" should not look at previous sizes, it should guess.
This commit is contained in:
parent
33f1210f72
commit
70dbb14f89
@ -5558,7 +5558,6 @@ gtk_window_guess_default_size (GtkWindow *window,
|
||||
gint *width,
|
||||
gint *height)
|
||||
{
|
||||
GtkWindowGeometryInfo *info;
|
||||
GtkWidget *widget;
|
||||
GdkScreen *screen;
|
||||
int minimum, natural;
|
||||
@ -5598,11 +5597,21 @@ gtk_window_guess_default_size (GtkWindow *window,
|
||||
gtk_widget_get_preferred_height_for_width (widget, *width, &minimum, &natural);
|
||||
*height = MAX (minimum, MIN (*height, natural));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_window_get_remembered_size (GtkWindow *window,
|
||||
int *width,
|
||||
int *height)
|
||||
{
|
||||
GtkWindowGeometryInfo *info;
|
||||
|
||||
*width = 0;
|
||||
*height = 0;
|
||||
|
||||
info = gtk_window_get_geometry_info (window, FALSE);
|
||||
if (info)
|
||||
{
|
||||
g_print ("last geometry info was %d %d\n", info->last.configure_request.width, info->last.configure_request.height);
|
||||
/* MAX() works even if the last request is unset with -1 */
|
||||
*width = MAX (*width, info->last.configure_request.width);
|
||||
*height = MAX (*height, info->last.configure_request.height);
|
||||
@ -5674,11 +5683,15 @@ gtk_window_realize (GtkWidget *widget)
|
||||
allocation.width == 1 &&
|
||||
allocation.height == 1)
|
||||
{
|
||||
gint w, h;
|
||||
|
||||
allocation.x = 0;
|
||||
allocation.y = 0;
|
||||
|
||||
gtk_window_guess_default_size (window, &allocation.width, &allocation.height);
|
||||
gtk_window_get_remembered_size (window, &w, &h);
|
||||
allocation.width = MAX (allocation.width, w);
|
||||
allocation.height = MAX (allocation.height, h);
|
||||
if (allocation.width == 0 || allocation.height == 0)
|
||||
{
|
||||
/* non-empty window */
|
||||
@ -7978,6 +7991,7 @@ gtk_window_compute_configure_request_size (GtkWindow *window,
|
||||
gint *height)
|
||||
{
|
||||
GtkWindowGeometryInfo *info;
|
||||
int w, h;
|
||||
|
||||
/* Preconditions:
|
||||
* - we've done a size request
|
||||
@ -7986,6 +8000,9 @@ gtk_window_compute_configure_request_size (GtkWindow *window,
|
||||
info = gtk_window_get_geometry_info (window, FALSE);
|
||||
|
||||
gtk_window_guess_default_size (window, width, height);
|
||||
gtk_window_get_remembered_size (window, &w, &h);
|
||||
*width = MAX (*width, w);
|
||||
*height = MAX (*height, h);
|
||||
|
||||
/* If window is empty so requests 0, default to random nonzero size */
|
||||
if (*width == 0 && *height == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user