Ephoto/Single Browser: ctrl+mouse wheel now zooms... Also if the images are zoomed fit.. you can cycle through the images by scrolling/dragging left and right.

SVN revision: 59630
This commit is contained in:
Stephen Houston 2011-05-23 18:53:09 +00:00
parent bb239f8685
commit 01568f1bbe
1 changed files with 38 additions and 0 deletions

View File

@ -346,6 +346,40 @@ _last_entry(Ephoto_Single_Browser *sb)
ephoto_single_browser_entry_set(sb->layout, entry);
}
static void
_viewer_scrolled(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
Ephoto_Single_Browser *sb = data;
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
int sx, sw, cx;
if (!v->fit)
return;
evas_object_geometry_get(sb->viewer, &sx, 0, &sw, 0);
if (v->photocam)
{
Evas_Object *i = elm_photocam_internal_image_get(v->photocam);
evas_object_geometry_get(i, &cx, 0, 0, 0);
}
else
evas_object_geometry_get(v->image, &cx, 0, 0, 0);
if (cx < (sx-(sw/2)))
_next_entry(sb);
else if (cx > (sw/2))
_prev_entry(sb);
}
static void
_mouse_wheel(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event_info)
{
Ephoto_Single_Browser *sb = data;
Ephoto_Viewer *v = evas_object_data_get(sb->viewer, "viewer");
Evas_Event_Mouse_Wheel *ev = event_info;
if (!evas_key_modifier_is_set(ev->modifiers, "Control")) return;
if (ev->z > 0) _zoom_set(sb, v->zoom + ZOOM_STEP);
else _zoom_set(sb, v->zoom - ZOOM_STEP);
}
static void
_key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event_info)
{
@ -393,6 +427,10 @@ _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb)
const char *bname = ecore_file_file_get(sb->entry->path);
sb->viewer = _viewer_add(sb->layout, sb->entry->path);
elm_layout_content_set(sb->layout, "ephoto.swallow.content", sb->viewer);
evas_object_event_callback_add
(sb->viewer, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel, sb);
evas_object_smart_callback_add
(sb->viewer, "scroll", _viewer_scrolled, sb);
evas_object_show(sb->viewer);
ephoto_title_set(sb->ephoto, bname);
}