Index: src/bin/eve_scrolled_webview.c =================================================================== --- src/bin/eve_scrolled_webview.c (revision 39112) +++ src/bin/eve_scrolled_webview.c (working copy) @@ -49,16 +49,6 @@ Evas_Object *mainframe; const char *file; const char *group; - struct - { - Evas_Coord x, y; - Ecore_Animator *anim; - } mouse_move; - struct - { - Evas_Coord dx, dy; - Ecore_Animator *anim; - } scroll_delayed; }; static Evas_Smart_Class _parent_sc = {NULL}; @@ -76,207 +66,10 @@ } static void -_eve_scrolled_webview_scroll_by(Eve_Scrolled_Webview_Data *priv, int dx, int dy) -{ - EWebKit_Hit_Test_Contents contents; - Evas_Object *webframe = ewk_webpage_object_mainframe_get(priv->page); - ewk_webframe_object_hit_test(webframe, &contents, priv->mouse_move.x, priv->mouse_move.y); - ewk_webframe_object_scroll(contents.frame, dx, dy); -} - -static int -_eve_scrolled_webview_scroll_by_delayed_do(void *data) -{ - Eve_Scrolled_Webview_Data *priv = data; - - if ((priv->scroll_delayed.dx == 0) && (priv->scroll_delayed.dy == 0)) - { - priv->scroll_delayed.anim = NULL; - return 0; - } - - _eve_scrolled_webview_scroll_by - (priv, priv->scroll_delayed.dx, priv->scroll_delayed.dy); - priv->scroll_delayed.dx = 0; - priv->scroll_delayed.dy = 0; - return 1; -} - -static void -_eve_scrolled_webview_scroll_by_delayed(Eve_Scrolled_Webview_Data *priv, Evas_Coord dx, Evas_Coord dy) -{ - if ((dx == 0) && (dy == 0)) - return; - - priv->scroll_delayed.dx += dx; - priv->scroll_delayed.dy += dy; - - if (priv->scroll_delayed.anim) - return; - priv->scroll_delayed.anim = ecore_animator_add - (_eve_scrolled_webview_scroll_by_delayed_do, priv); -} - -static void -_eve_scrolled_webview_on_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Eve_Scrolled_Webview_Data *priv = data; - Evas_Event_Key_Down *ev = event_info; - char *value; - - value = ev->keyname; - if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) - { - fprintf(stderr, "DBG: key down event '%s' is on hold, ignored.\n", - value); - return; - } - - if (!ewk_event_feed_key_press(priv->webview, ev)) - return; - - ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; - - if (strcmp(value,"Left") == 0) - _eve_scrolled_webview_scroll_by_delayed(priv, -10, 0); - else if (strcmp(value,"Right") == 0) - _eve_scrolled_webview_scroll_by_delayed(priv, 10, 0); - else if (strcmp(value,"Up") == 0) - _eve_scrolled_webview_scroll_by_delayed(priv, 0, -10); - else if (strcmp(value, "Down") == 0) - _eve_scrolled_webview_scroll_by_delayed(priv, 0, 10); - else if (strcmp(value, "Prior") == 0) - { - int offset; - edje_object_part_geometry_get - (priv->edje, EDJE_PART_CONTENT, NULL, NULL, NULL, &offset); - offset = (offset * 9) / 10; - _eve_scrolled_webview_scroll_by_delayed(priv, 0, -offset); - } - else if (strcmp(value, "Next") == 0) - { - int offset; - edje_object_part_geometry_get - (priv->edje, EDJE_PART_CONTENT, NULL, NULL, NULL, &offset); - offset = (offset * 9) / 10; - _eve_scrolled_webview_scroll_by_delayed(priv, 0, offset); - } - else if (strcmp(value, "Home") == 0) - printf("Command:home\n"); - else if (strcmp(value, "End") == 0) - printf("Command:end\n"); - else - ev->event_flags &= ~EVAS_EVENT_FLAG_ON_HOLD; /* unset on_hold */ -} - -static int -_eve_scrolled_webview_pan_anim(void *data) -{ - Eve_Scrolled_Webview_Data *priv = data; - Evas_Coord x, y, dx, dy; - - evas_pointer_output_xy_get(priv->base.evas, &x, &y); - dx = priv->mouse_move.x - x ; - dy = priv->mouse_move.y - y; - - if ((dx == 0) && (dy == 0)) - return 1; - - _eve_scrolled_webview_scroll_by(priv, dx, dy); - - priv->mouse_move.x = x; - priv->mouse_move.y = y; - - return 1; -} - -static void -_eve_scrolled_webview_on_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Eve_Scrolled_Webview_Data *priv = data; - Evas_Event_Mouse_Move *ev = event_info; - ewk_event_feed_mouse_move(priv->webview, ev); -} - -static void -_eve_scrolled_webview_pan_anim_start(Eve_Scrolled_Webview_Data *priv) -{ - if (priv->mouse_move.anim) - return; - priv->mouse_move.anim = ecore_animator_add - (_eve_scrolled_webview_pan_anim, priv); - - evas_object_event_callback_del - (priv->webview, EVAS_CALLBACK_MOUSE_MOVE, - _eve_scrolled_webview_on_mouse_move); -} - -static void -_eve_scrolled_webview_pan_anim_stop(Eve_Scrolled_Webview_Data *priv) -{ - if (!priv->mouse_move.anim) - return; - ecore_animator_del(priv->mouse_move.anim); - priv->mouse_move.anim = NULL; - - /* make sure it's not there already */ - evas_object_event_callback_del - (priv->webview, EVAS_CALLBACK_MOUSE_MOVE, - _eve_scrolled_webview_on_mouse_move); - - evas_object_event_callback_add - (priv->webview, EVAS_CALLBACK_MOUSE_MOVE, - _eve_scrolled_webview_on_mouse_move, priv); -} - -static void -_eve_scrolled_webview_on_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Eve_Scrolled_Webview_Data *priv = data; - Evas_Event_Mouse_Down *ev = event_info; - bool accepted; - - evas_object_focus_set(priv->webview, 1); - - ewk_event_feed_mouse_down(priv->webview, ev); - - _eve_scrolled_webview_pan_anim_stop(priv); -} - -static void -_eve_scrolled_webview_on_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Eve_Scrolled_Webview_Data *priv = data; - Evas_Event_Mouse_Up *ev = event_info; - - ewk_event_feed_mouse_up(obj, ev); -} - -static void -_eve_scrolled_webview_on_mouse_wheel(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Eve_Scrolled_Webview_Data *priv = data; - Evas_Event_Mouse_Wheel *ev = event_info; - int offset = ev->z * 20; - - if (offset == 0) - return; - - if (ev->direction == 0) - _eve_scrolled_webview_scroll_by_delayed(priv, 0, offset); - else if (ev->direction == 1) - _eve_scrolled_webview_scroll_by_delayed(priv, offset, 0); -} - -static void _eve_scrolled_webview_smart_del(Evas_Object *o) { EVE_SCROLLED_WEBVIEW_DATA_GET(o, priv); - if (priv->scroll_delayed.anim) - ecore_animator_del(priv->scroll_delayed.anim); - _eve_scrolled_webview_pan_anim_stop(priv); - evas_object_del(priv->webview); /* edje does not delete its children */ eina_stringshare_del(priv->file); @@ -344,21 +137,6 @@ priv->mainframe = ewk_webpage_object_mainframe_get(priv->page); _eve_scrolled_webview_edje_reset(priv); - - const struct event_map - { - int event; - void (*cb)(void *, Evas *, Evas_Object *, void *); - } *itr, map[] = { - {EVAS_CALLBACK_KEY_DOWN, _eve_scrolled_webview_on_key_down}, - {EVAS_CALLBACK_MOUSE_MOVE, _eve_scrolled_webview_on_mouse_move}, - {EVAS_CALLBACK_MOUSE_DOWN, _eve_scrolled_webview_on_mouse_down}, - {EVAS_CALLBACK_MOUSE_UP, _eve_scrolled_webview_on_mouse_up}, - {EVAS_CALLBACK_MOUSE_WHEEL, _eve_scrolled_webview_on_mouse_wheel}, - {-1, NULL} - }; - for (itr = map; itr->cb != NULL; itr++) - evas_object_event_callback_add(priv->webview, itr->event, itr->cb, priv); } Index: src/bin/eve_navigator.c =================================================================== --- src/bin/eve_navigator.c (revision 39112) +++ src/bin/eve_navigator.c (working copy) @@ -170,16 +170,6 @@ } static void -_eve_navigator_on_scroll_requested(void *data, Evas_Object *obj, void *event_info) -{ - EWebKit_Event_Scroll_Requested *ev = event_info; - - printf("TODO: scroll requested: %dx%d %d,%d+%dx%d\n", - ev->width, ev->height, - ev->view.x, ev->view.y, ev->view.w, ev->view.h); -} - -static void _eve_navigator_back(void *data, Evas_Object *obj, const char *emission, const char *source) { Eve_Navigator_Data *priv = data; @@ -360,8 +350,6 @@ (priv->webview, _eve_navigator_on_title_changed, priv); ewk_callback_url_changed_add (priv->webview, _eve_navigator_on_url_changed, priv); - ewk_callback_scroll_requested_add - (priv->webview, _eve_navigator_on_scroll_requested, priv); evas_object_event_callback_add (o, EVAS_CALLBACK_KEY_DOWN, _eve_navigator_on_key_down, priv);