Mercurial > geeqie.yaz
diff src/layout_image.c @ 128:98e2632b5d3d
improved connected scroll and active image switching
author | nadvornik |
---|---|
date | Tue, 10 Jul 2007 21:25:51 +0000 |
parents | 271afad04d07 |
children | 89fc00ffbce2 |
line wrap: on
line diff
--- a/src/layout_image.c Fri Jun 29 15:16:46 2007 +0000 +++ b/src/layout_image.c Tue Jul 10 21:25:51 2007 +0000 @@ -1526,10 +1526,10 @@ } } -static void layout_image_scroll_notify_cb(ImageWindow *imd, gint x, gint y, gint width, gint height, gpointer data) +static void layout_image_drag_cb(ImageWindow *imd, gint button, guint32 time, + gdouble x, gdouble y, guint state, gdouble dx, gdouble dy, gpointer data) { gint i; - printf("scroll cb %d %d %d %d\n", x,y,width, height); LayoutWindow *lw = data; @@ -1554,6 +1554,7 @@ gdouble x, gdouble y, guint state, gpointer data) { LayoutWindow *lw = data; + GtkWidget *menu; gint i = image_idx(lw, imd); if (i != -1) @@ -1561,8 +1562,48 @@ printf("image activate %d\n", i); layout_image_activate(lw, i); } + + switch (button) + { + case 3: + menu = layout_image_pop_menu(lw); + if (imd == lw->image) + { + g_object_set_data(G_OBJECT(menu), "click_parent", imd->widget); + } + gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 3, time); + break; + default: + break; + } + } +static void layout_image_drag_inactive_cb(ImageWindow *imd, gint button, guint32 time, + gdouble x, gdouble y, guint state, gdouble dx, gdouble dy, gpointer data) +{ + LayoutWindow *lw = data; + + gint i = image_idx(lw, imd); + + if (i != -1) + { + printf("image activate %d\n", i); + layout_image_activate(lw, i); + } + + + 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); + } +} + + static void layout_image_set_buttons(LayoutWindow *lw) { image_set_button_func(lw->image, layout_image_button_cb, lw); @@ -1619,7 +1660,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_scroll_notify_func(lw->split_images[i], NULL, NULL); + image_set_drag_func(lw->image, layout_image_drag_inactive_cb, lw); image_attach_window(lw->split_images[i], NULL, NULL, NULL, FALSE); image_select(lw->split_images[i], FALSE); @@ -1645,7 +1686,7 @@ image_set_update_func(lw->image, layout_image_update_cb, lw); layout_image_set_buttons(lw); - image_set_scroll_notify_func(lw->image, layout_image_scroll_notify_cb, lw); + image_set_drag_func(lw->image, layout_image_drag_cb, lw); image_attach_window(lw->image, lw->window, NULL, "GQview", FALSE);