Mercurial > geeqie
diff src/layout_image.c @ 129:89fc00ffbce2
started relative scroll, keep scroll position
author | nadvornik |
---|---|
date | Wed, 11 Jul 2007 20:00:07 +0000 |
parents | 98e2632b5d3d |
children | 7ea9fbcff664 |
line wrap: on
line diff
--- a/src/layout_image.c Tue Jul 10 21:25:51 2007 +0000 +++ b/src/layout_image.c Wed Jul 11 20:00:07 2007 +0000 @@ -1130,10 +1130,15 @@ void layout_image_set_path(LayoutWindow *lw, const gchar *path) { + gfloat sx, sy; if (!layout_valid(&lw)) return; + image_get_scroll_center(lw->image, &sx, &sy); + image_change_path(lw->image, path, image_zoom_get_default(lw->image, zoom_mode)); + image_set_scroll_center(lw->image, sx, sy); + layout_list_sync_path(lw, path); layout_image_slideshow_continue_check(lw); layout_bars_new_image(lw); @@ -1536,10 +1541,21 @@ for (i=0; i < MAX_SPLIT_IMAGES; i++) { if (lw->split_images[i] && lw->split_images[i] != imd) -// if (lw->connect_zoom) -// image_sync_zoom_from_image(lw->split_images[i], imd); - if (lw->connect_scroll) - image_sync_scroll_from_image_absolute(lw->split_images[i], imd); + if (lw->connect_scroll) + { + gfloat sx, sy; + if (!(state & GDK_CONTROL_MASK)) + { + image_get_scroll_center(imd, &sx, &sy); + } + else + { + image_get_scroll_center(lw->split_images[i], &sx, &sy); + sx += dx; + sy += dy; + } + image_set_scroll_center(lw->split_images[i], sx, sy); + } } } @@ -1586,6 +1602,7 @@ gint i = image_idx(lw, imd); + printf("drag inacive\n"); if (i != -1) { printf("image activate %d\n", i); @@ -1593,14 +1610,8 @@ } - for (i=0; i < MAX_SPLIT_IMAGES; i++) - { - if (lw->split_images[i] && lw->split_images[i] != imd) -// if (lw->connect_zoom) -// image_sync_zoom_from_image(lw->split_images[i], imd); - if (lw->connect_scroll) - image_sync_scroll_from_image_absolute(lw->split_images[i], imd); - } + /* continue as with active image */ + layout_image_drag_cb(imd, button, time, x, y, state, dx, dy, data); } @@ -1660,7 +1671,7 @@ if (!lw->split_images[i]) return; image_set_update_func(lw->split_images[i], NULL, NULL); layout_image_set_buttons_inactive(lw, i); - image_set_drag_func(lw->image, layout_image_drag_inactive_cb, lw); + image_set_drag_func(lw->split_images[i], layout_image_drag_inactive_cb, lw); image_attach_window(lw->split_images[i], NULL, NULL, NULL, FALSE); image_select(lw->split_images[i], FALSE);