Mercurial > geeqie
diff src/pan-view.c @ 77:44f2223541d1
Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
* pan-view.c: Recalc the size of the layout when popping up new images
in the calendar so that all new images can be scrolled into view.
* pixbuf-renderer.[ch] (pixbuf_renderer_set_tiles_size): Add ability
to resize a tile canvas without the need for a complete reset/render.
author | gqview |
---|---|
date | Sun, 15 Oct 2006 14:49:25 +0000 |
parents | f63ecca6c087 |
children | b192a0efe080 |
line wrap: on
line diff
--- a/src/pan-view.c Sun Oct 15 08:06:14 2006 +0000 +++ b/src/pan-view.c Sun Oct 15 14:49:25 2006 +0000 @@ -288,6 +288,8 @@ static GList *pan_layout_intersect(PanWindow *pw, gint x, gint y, gint width, gint height); +static void pan_layout_resize(PanWindow *pw, gint border); + static void pan_window_layout_update_idle(PanWindow *pw); static GtkWidget *pan_popup_menu(PanWindow *pw); @@ -1997,6 +1999,8 @@ pan_item_box_shadow(pbox, PAN_SHADOW_OFFSET * 2, PAN_SHADOW_FADE * 2); pan_item_added(pw, pbox); + + pan_layout_resize(pw, 100); } static void pan_window_layout_compute_calendar(PanWindow *pw, const gchar *path, gint *width, gint *height) @@ -2528,6 +2532,46 @@ return list; } +static void pan_layout_resize(PanWindow *pw, gint border) +{ + gint width = 0; + gint height = 0; + GList *work; + PixbufRenderer *pr; + + work = pw->list; + while (work) + { + PanItem *pi; + + pi = work->data; + work = work->next; + + if (width < pi->x + pi->width) width = pi->x + pi->width; + if (height < pi->y + pi->height) height = pi->y + pi->height; + } + work = pw->list_static; + while (work) + { + PanItem *pi; + + pi = work->data; + work = work->next; + + if (width < pi->x + pi->width) width = pi->x + pi->width; + if (height < pi->y + pi->height) height = pi->y + pi->height; + } + + width += border; + height += border; + + pr = PIXBUF_RENDERER(pw->imd->pr); + if (width < pr->window_width) width = pr->window_width; + if (height < pr->window_width) height = pr->window_height; + + pixbuf_renderer_set_tiles_size(PIXBUF_RENDERER(pw->imd->pr), width, height); +} + /* *----------------------------------------------------------------------------- * tile generation