diff --git a/legacy/elementary/src/bin/test_gesture_layer.c b/legacy/elementary/src/bin/test_gesture_layer.c index ecc8daa119..2b7d4c2193 100644 --- a/legacy/elementary/src/bin/test_gesture_layer.c +++ b/legacy/elementary/src/bin/test_gesture_layer.c @@ -173,9 +173,6 @@ zoom_start(void *_po, void *event_info) po->zoom_out = NULL; } - - po->dx = p->x - po->bx; - po->dy = p->y - po->by; /* Give it a "lift" effect right from the start */ po->base_zoom = BASE_ZOOM * LIFT_FACTOR; po->zoom = po->base_zoom; @@ -192,8 +189,6 @@ zoom_move(void *_po, void *event_info) Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info; printf("zoom move <%d,%d> <%f>\n", p->x, p->y, p->zoom); po->zoom = po->base_zoom * p->zoom; - po->bx = p->x - po->dx; - po->by = p->y - po->dy; apply_changes(po); return EVAS_EVENT_FLAG_NONE; } @@ -205,6 +200,52 @@ zoom_end(void *_po, void *event_info) Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info; printf("zoom end/abort <%d,%d> <%f>\n", p->x, p->y, p->zoom); + /* Apply the zoom out animator */ + po->shadow_zoom = 1.3; + po->base_zoom = po->zoom; + po->zoom_out = elm_transit_add(); + elm_transit_duration_set(po->zoom_out, zoom_out_animation_duration); + elm_transit_effect_add(po->zoom_out, zoom_out_animation_operation, po, zoom_out_animation_end); + elm_transit_go(po->zoom_out); + return EVAS_EVENT_FLAG_NONE; +} + +static Evas_Event_Flags +momentum_start(void *_po, void *event_info) +{ + Photo_Object *po = (Photo_Object *) _po; + Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info; + printf("momentum_start <%d,%d>\n", p->x2, p->y2); + + po->dx = p->x2 - po->bx; + po->dy = p->y2 - po->by; + apply_changes(po); + + return EVAS_EVENT_FLAG_NONE; +} + +static Evas_Event_Flags +momentum_move(void *_po, void *event_info) +{ + Photo_Object *po = (Photo_Object *) _po; + Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info; + printf("momentum move <%d,%d>\n", p->x2, p->y2); + + po->bx = p->x2 - po->dx; + po->by = p->y2 - po->dy; + apply_changes(po); + + return EVAS_EVENT_FLAG_NONE; +} + +static Evas_Event_Flags +momentum_end(void *_po, void *event_info) +{ + Photo_Object *po = (Photo_Object *) _po; + Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info; + printf("momentum end/abort <%d,%d> <%d,%d>\n", p->x2, p->y2, p->mx, p->my); + (void) po; + (void) p; /* Make sure middle is in the screen, if not, fix it. */ { /* FIXME: Use actual window sizes instead of the hardcoded @@ -222,14 +263,8 @@ zoom_end(void *_po, void *event_info) else if (my > 800) po->by = 800 - (po->bh / 2); } + apply_changes(po); - /* Apply the zoom out animator */ - po->shadow_zoom = 1.3; - po->base_zoom = po->zoom; - po->zoom_out = elm_transit_add(); - elm_transit_duration_set(po->zoom_out, zoom_out_animation_duration); - elm_transit_effect_add(po->zoom_out, zoom_out_animation_operation, po, zoom_out_animation_end); - elm_transit_go(po->zoom_out); return EVAS_EVENT_FLAG_NONE; } @@ -306,6 +341,10 @@ photo_object_add(Evas_Object *parent, Evas_Object *ic, const char *icon, Evas_Co elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE, zoom_move, po); elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_END, zoom_end, po); elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_ABORT, zoom_end, po); + elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_MOMENTUM, ELM_GESTURE_STATE_START, momentum_start, po); + elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_MOMENTUM, ELM_GESTURE_STATE_MOVE, momentum_move, po); + elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_MOMENTUM, ELM_GESTURE_STATE_END, momentum_end, po); + elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_MOMENTUM, ELM_GESTURE_STATE_ABORT, momentum_end, po); po->rotate = po->base_rotate = angle; po->shadow_zoom = 1.3;