changeset 1617:d4d12f872398

preserve image center over short periods when the "broken image" icon is displayed http://sourceforge.net/tracker/?func=detail&aid=2793057&group_id=222125&atid=1054680
author nadvornik
date Sat, 30 May 2009 20:18:22 +0000
parents 5b36a6ff55ae
children 552648eff4f2
files src/pixbuf-renderer.c
diffstat 1 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/pixbuf-renderer.c	Tue May 26 19:41:22 2009 +0000
+++ b/src/pixbuf-renderer.c	Sat May 30 20:18:22 2009 +0000
@@ -3172,11 +3172,23 @@
 	gint src_x, src_y;
 	if (!pr->width || !pr->height) return;
 
-	src_x = pr->x_scroll + pr->vis_width / 2;
-	src_y = pr->y_scroll + pr->vis_height / 2;
-
-	pr->norm_center_x = (gdouble)src_x / pr->width;
-	pr->norm_center_y = (gdouble)src_y / pr->height;
+	/* 
+	 * Update norm_center only if the image is bigger than the window.
+	 * With this condition the stored center survives also a temporary display
+	 * of the "broken image" icon.
+	*/
+
+	if (pr->width > pr->window_width)
+		{
+		src_x = pr->x_scroll + pr->vis_width / 2;
+		pr->norm_center_x = (gdouble)src_x / pr->width;
+		}
+	
+	if (pr->height > pr->window_height)
+		{
+		src_y = pr->y_scroll + pr->vis_height / 2;
+		pr->norm_center_y = (gdouble)src_y / pr->height;
+		}
 }