From 232a99337683e7eae5d9b467e971ca5e4f5dc2e9 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Sep 03 2012 14:37:33 +0000 Subject: calculate minimum window size better for multi-head setups --- diff --git a/xsane-0.998-preview-window-size.patch b/xsane-0.998-preview-window-size.patch new file mode 100644 index 0000000..7a441b7 --- /dev/null +++ b/xsane-0.998-preview-window-size.patch @@ -0,0 +1,56 @@ +From d25c926e1354ea8d6c4b4636503d7548a50cbd7e Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Mon, 3 Sep 2012 16:07:44 +0200 +Subject: [PATCH] patch: preview-window-size + +Squashed commit of the following: + +commit 9fa241f0f4a21623e0ae5be871d885f6b082dd38 +Author: Nils Philippsen +Date: Mon Sep 3 16:00:35 2012 +0200 + + calculate minimum window size better for multi-head setups +--- + src/xsane-preview.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/src/xsane-preview.c b/src/xsane-preview.c +index 264c775..634a4e2 100644 +--- a/src/xsane-preview.c ++++ b/src/xsane-preview.c +@@ -4665,6 +4665,9 @@ void preview_update_surface(Preview *p, int surface_changed) + SANE_Unit unit; + double min, max; + int expand_surface = 0; ++ gint min_width, min_height; ++ GdkScreen *screen; ++ GdkRectangle geometry; + + DBG(DBG_proc, "preview_update_surface\n"); + +@@ -4848,8 +4851,20 @@ void preview_update_surface(Preview *p, int surface_changed) + { + DBG(DBG_info, "preview_update_surface: defining size of preview window\n"); + +- p->preview_window_width = 0.3 * gdk_screen_width(); +- p->preview_window_height = 0.5 * gdk_screen_height(); ++ /* ensure preview window fits on displays, account for multi-head */ ++ min_width = gdk_screen_width(); ++ min_height = gdk_screen_height(); ++ ++ screen = gdk_screen_get_default(); ++ for (i = 0; i < gdk_screen_get_n_monitors(screen); i++) ++ { ++ gdk_screen_get_monitor_geometry(screen, i, &geometry); ++ min_width = MIN(min_width, geometry.width); ++ min_height = MIN(min_height, geometry.height); ++ } ++ ++ p->preview_window_width = 0.3 * min_width; ++ p->preview_window_height = 0.5 * min_height; + preview_area_correct(p); /* calculate preview_width and height */ + gtk_widget_set_size_request(GTK_WIDGET(p->window), p->preview_width, p->preview_height); + } +-- +1.7.11.4 + diff --git a/xsane.spec b/xsane.spec index 768dc32..2f13182 100644 --- a/xsane.spec +++ b/xsane.spec @@ -15,7 +15,7 @@ Name: xsane Summary: X Window System front-end for the SANE scanner interface Version: 0.998 -Release: 11%{?dist} +Release: 12%{?dist} Source0: http://www.xsane.org/download/%{name}-%{version}.tar.gz Source1: xsane-256x256.png # distro-specific: use "xdg-open" instead of "netscape" to launch help browser @@ -50,6 +50,9 @@ Patch9: xsane-0.998-libpng.patch # distro-specific: set program name/wmclass so GNOME shell picks appropriate # high resolution icon file Patch10: xsane-0.998-wmclass.patch +# calculate minimum window size better for multi-head setups +# submitted to upstream (Oliver Rauch) via email, 2012-09-03 +Patch11: xsane-0.998-preview-window-size.patch # autoconf-generated files Patch100: xsane-0.998-1-autoconf.patch.bz2 License: GPLv2+ @@ -112,6 +115,7 @@ done %patch8 -p1 -b .preview-selection.patch %patch9 -p1 -b .libpng %patch10 -p1 -b .wmclass +%patch11 -p1 -b .preview-window-size %patch100 -p1 -b .autoconf @@ -209,6 +213,9 @@ fi %{_datadir}/sane/xsane %changelog +* Mon Sep 03 2012 Nils Philippsen - 0.998-12 +- calculate minimum window size better for multi-head setups + * Sun Jul 22 2012 Fedora Release Engineering - 0.998-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild