[gtk+/gtk-3-10] window: Don't assume 640x480 max default size
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-10] window: Don't assume 640x480 max default size
- Date: Tue, 26 Nov 2013 22:12:59 +0000 (UTC)
commit ca41e8b4ff3d3ffc7c6d97edd8791376373111cb
Author: Benjamin Otte <otte redhat com>
Date: Mon Nov 25 02:40:05 2013 +0100
window: Don't assume 640x480 max default size
Instead, use the monitor's work area.
This might have unforseen side effects that warrant a later revert, such
as:
- Apparently some WMs assume maximizing when a window is maximum screen
size.
- WMs might not shrink the window by the decorations' size when it tries
to be fullscreen.
- Applications might have buggy size request code that causes weirdly
sized windows.
gtk/gtkwindow.c | 31 ++++++++++++++-----------------
1 files changed, 14 insertions(+), 17 deletions(-)
---
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index e9d13ed..cf80839 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -5679,13 +5679,6 @@ gtk_window_unmap (GtkWidget *widget)
* information from the windowing system.)
*/
-/* We use these for now to not make windows too big by accident. Note
- * that we still clamp these numbers by screen size. Also note that
- * minimum size still overrides this. So keep your windows small! :)
- */
-#define MAX_DEFAULT_WINDOW_WIDTH 640
-#define MAX_DEFAULT_WINDOW_HEIGHT 480
-
static void
gtk_window_guess_default_size (GtkWindow *window,
gint *width,
@@ -5693,27 +5686,31 @@ gtk_window_guess_default_size (GtkWindow *window,
{
GtkWidget *widget;
GdkScreen *screen;
+ GdkWindow *gdkwindow;
+ GdkRectangle workarea;
int minimum, natural;
widget = GTK_WIDGET (window);
screen = gtk_widget_get_screen (widget);
+ gdkwindow = gtk_widget_get_window (GTK_WIDGET (window));
- *width = gdk_screen_get_width (screen);
- *height = gdk_screen_get_height (screen);
-
- if (*width >= *height)
+ if (gdkwindow)
{
- /* landscape */
- *width = MIN (*width, MAX_DEFAULT_WINDOW_WIDTH);
- *height = MIN (*height, MAX_DEFAULT_WINDOW_HEIGHT);
+ gdk_screen_get_monitor_workarea (screen,
+ gdk_screen_get_monitor_at_window (screen, gdkwindow),
+ &workarea);
}
else
{
- /* portrait */
- *width = MIN (*width, MAX_DEFAULT_WINDOW_HEIGHT);
- *height = MIN (*height, MAX_DEFAULT_WINDOW_WIDTH);
+ /* XXX: Figure out what screen we appear on */
+ gdk_screen_get_monitor_workarea (screen,
+ 0,
+ &workarea);
}
+ *width = workarea.width;
+ *height = workarea.height;
+
if (gtk_widget_get_request_mode (widget) == GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT)
{
gtk_widget_get_preferred_height (widget, &minimum, &natural);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]