From fef45631220aab4ae8d7165f32e8437e3e8e5e10 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sun, 30 Aug 2009 01:47:54 +0000 Subject: [PATCH] Do not create windows bigger than the monitor size --- src/view.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/view.c b/src/view.c index f15a4b5..10357a9 100644 --- a/src/view.c +++ b/src/view.c @@ -189,8 +189,8 @@ static GtkWidget * _new_image(View * view, char const * path) int pw; int ph; GdkScreen * screen; - int sw; - int sh; + gint monitor; + GdkRectangle rect; window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(window), @@ -206,10 +206,15 @@ static GtkWidget * _new_image(View * view, char const * path) widget); pw = gdk_pixbuf_get_width(pixbuf) + 4; ph = gdk_pixbuf_get_height(pixbuf) + 4; + /* get the current monitor size */ screen = gdk_screen_get_default(); - sw = gdk_screen_get_width(screen); - sh = gdk_screen_get_height(screen); - gtk_widget_set_size_request(window, min(pw, sw), min(ph, sh)); + gtk_widget_realize(view->window); + monitor = gdk_screen_get_monitor_at_window(screen, + gtk_widget_get_window(view->window)); + gdk_screen_get_monitor_geometry(screen, monitor, &rect); + /* set an upper bound to the size of the window */ + gtk_widget_set_size_request(window, min(pw, rect.width), min(ph, + rect.height)); return window; }