diff src/pixbuf-renderer.c @ 24:104e34f9ab1f

Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net> * image.c (image_change_from_image): Fix and use pixbuf_renderer_move. * pan-view.c: Convert back to ImageWindow from PixbufRenderer, so that focus and full screen work again. * pixbuf-renderer.[ch] (pixbuf_renderer_move): Add this function. ##### 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 Wed, 23 Mar 2005 05:29:45 +0000
parents 17acca639a86
children 0c3b353b666e
line wrap: on
line diff
--- a/src/pixbuf-renderer.c	Sat Mar 19 01:15:17 2005 +0000
+++ b/src/pixbuf-renderer.c	Wed Mar 23 05:29:45 2005 +0000
@@ -3019,6 +3019,59 @@
 	return pr->pixbuf;
 }
 
+void pixbuf_renderer_move(PixbufRenderer *pr, PixbufRenderer *source)
+{
+	GObject *object;
+	PixbufRendererScrollResetType scroll_reset;
+
+	g_return_if_fail(IS_PIXBUF_RENDERER(pr));
+	g_return_if_fail(IS_PIXBUF_RENDERER(source));
+
+	if (pr == source) return;
+
+	object = G_OBJECT(pr);
+
+	g_object_set(object, "zoom_min", source->zoom_min, NULL);
+	g_object_set(object, "zoom_max", source->zoom_max, NULL);
+	g_object_set(object, "loading", source->loading, NULL);
+
+	pr->x_scroll = source->x_scroll;
+	pr->y_scroll = source->y_scroll;
+
+	scroll_reset = pr->scroll_reset;
+	pr->scroll_reset = PR_SCROLL_RESET_NOCHANGE;
+
+	if (source->source_tiles_enabled)
+		{
+		pr_source_tile_unset(pr);
+
+		pr->source_tiles_enabled = source->source_tiles_enabled;
+		pr->source_tiles_cache_size = source->source_tiles_cache_size;
+		pr->source_tile_width = source->source_tile_width;
+		pr->source_tile_height = source->source_tile_height;
+		pr->image_width = source->image_width;
+		pr->image_height = source->image_height;
+
+		pr->func_tile_request = source->func_tile_request;
+		pr->func_tile_dispose = source->func_tile_dispose;
+		pr->func_tile_data = source->func_tile_data;
+
+		pr->source_tiles = source->source_tiles;
+		source->source_tiles = NULL;
+
+		pr_zoom_sync(pr, pr->zoom, TRUE, FALSE, TRUE, FALSE, 0, 0);
+		pr_redraw(pr, TRUE);
+		}
+	else
+		{
+		pixbuf_renderer_set_pixbuf(pr, source->pixbuf, source->zoom);
+		}
+
+	pr->scroll_reset = scroll_reset;
+
+	pixbuf_renderer_set_pixbuf(source, NULL, source->zoom);
+}
+
 void pixbuf_renderer_area_changed(PixbufRenderer *pr, gint x, gint y, gint width, gint height)
 {
 	gint sx, sy, sw, sh;