diff src/image.c @ 26:acd9885ebd78

Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net> * image.[ch]: Add utility to sync image settings to user preferences. * pixbuf-renderer.c: Fix rounding errors. * preferences.c: Call image_options_sync() when applying changes. ##### Note: GQview CVS on sourceforge is not always up to date, please use ##### ##### an offical release when making enhancements and translation updates. #####
author gqview
date Tue, 29 Mar 2005 01:28:17 +0000
parents 0c3b353b666e
children 9c24765c2d3a
line wrap: on
line diff
--- a/src/image.c	Sat Mar 26 03:50:35 2005 +0000
+++ b/src/image.c	Tue Mar 29 01:28:17 2005 +0000
@@ -39,6 +39,9 @@
 #define IMAGE_AUTO_REFRESH_TIME 3000
 
 
+static GList *image_list = NULL;
+
+
 /*
  *-------------------------------------------------------------------
  * 'signals'
@@ -1328,12 +1331,50 @@
 
 /*
  *-------------------------------------------------------------------
+ * prefs sync
+ *-------------------------------------------------------------------
+ */
+
+static void image_options_set(ImageWindow *imd)
+{
+	g_object_set(G_OBJECT(imd->pr), "zoom_quality", zoom_quality,
+					"zoom_2pass", two_pass_zoom,
+					"zoom_expand", zoom_to_fit_expands,
+					"dither_quality", dither_quality,
+					"scroll_reset", scroll_reset_method,
+					"cache_display", tile_cache_max,
+					"window_fit", fit_window,
+					"window_limit", limit_window_size,
+					"window_limit_value", max_window_size,
+					NULL);
+}
+
+void image_options_sync(void)
+{
+	GList *work;
+
+	work = image_list;
+	while (work)
+		{
+		ImageWindow *imd;
+
+		imd = work->data;
+		work = work->next;
+
+		image_options_set(imd);
+		}
+}
+
+/*
+ *-------------------------------------------------------------------
  * init / destroy
  *-------------------------------------------------------------------
  */
 
 static void image_free(ImageWindow *imd)
 {
+	image_list = g_list_remove(image_list, imd);
+
 	image_reset(imd);
 
 	image_read_ahead_cancel(imd);
@@ -1392,7 +1433,7 @@
 
 	imd->pr = GTK_WIDGET(pixbuf_renderer_new());
 
-	g_object_set(G_OBJECT(imd->pr), "zoom_2pass", TRUE, NULL);
+	image_options_set(imd);
 
 	if (imd->has_frame)
 		{
@@ -1431,6 +1472,8 @@
 	g_signal_connect(G_OBJECT(imd->pr), "render_complete",
 			 G_CALLBACK(image_render_complete_cb), imd);
 
+	image_list = g_list_append(image_list, imd);
+
 	return imd;
 }