summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk/gtkwindow.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 66177192fd..3dacb0328d 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -4149,6 +4149,12 @@ gtk_window_compute_min_size (GtkWidget *window,
*min_height = other;
}
+/* The maximum size we pick for windows if we have free choice.
+ * We don't want them to get so big that they hug the screen edges and
+ * look like they are maximized.
+ */
+#define MAX_DEFAULT_SIZE (0.85)
+
static void
gtk_window_compute_default_width_for_height (GtkWindow *window,
int cur_width,
@@ -4169,8 +4175,10 @@ gtk_window_compute_default_width_for_height (GtkWindow *window,
NULL, NULL);
*min_height = minimum;
if (cur_height <= 0)
- cur_height = natural;
- *height = MAX (minimum, MIN (max_height, cur_height));
+ cur_height = MIN (natural, max_height * MAX_DEFAULT_SIZE);
+ else
+ cur_height = MIN (max_height, cur_height);
+ *height = MAX (minimum, cur_height);
gtk_widget_measure (widget, GTK_ORIENTATION_HORIZONTAL,
*height,
@@ -4206,8 +4214,10 @@ gtk_window_compute_default_height_for_width (GtkWindow *window,
NULL, NULL);
*min_width = minimum;
if (cur_width <= 0)
- cur_width = natural;
- *width = MAX (minimum, MIN (max_width, cur_width));
+ cur_width = MIN (natural, max_width * MAX_DEFAULT_SIZE);
+ else
+ cur_width = MIN (max_width, cur_width);
+ *width = MAX (minimum, cur_width);
gtk_widget_measure (widget, GTK_ORIENTATION_VERTICAL,
*width,