Mercurial > geeqie.yaz
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;