Use asynchronous hit test in efl_webview_app
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / efl_webview_app / app.c
index 4d98bd8..28c2036 100644 (file)
@@ -116,6 +116,7 @@ static void __scroll_down_cb(void* data, Evas_Object* obj, void* event_info);
 static void __scroll_up_cb(void* data, Evas_Object* obj, void* event_info);
 static void __scroll_left_cb(void* data, Evas_Object* obj, void* event_info);
 static void __scroll_right_cb(void* data, Evas_Object* obj, void* event_info);
+static void __hit_test_request_cb(Evas_Object* o, int x, int y, int hit_test_mode, Ewk_Hit_Test*, void* user_data);
 static void __webprocess_crashed_cb(void* data, Evas_Object* obj, void* event_info);
 
 static void on_evas_resize(Ecore_Evas*);
@@ -1368,13 +1369,8 @@ void __scroll_right_cb(void* data, Evas_Object* obj, void* event_info)
   printf("Scroll Right Notification\n");
 }
 
-void on_mouse_up(void* data, Evas* canvas, Evas_Object* obj, void* event_info)
+void __hit_test_request_cb(Evas_Object* o, int x, int y, int hit_test_mode, Ewk_Hit_Test* ht, void* user_data)
 {
-  Evas_Event_Mouse_Up* event = (Evas_Event_Mouse_Up*)event_info;
-  if (!evas_key_modifier_is_set(event->modifiers, "Shift"))
-      return;
-
-  Ewk_Hit_Test* ht = ewk_view_hit_test_new(obj, event->canvas.x, event->canvas.y, EWK_HIT_TEST_MODE_ALL);
   printf("HitTest: context %d\n", ewk_hit_test_result_context_get(ht));
   printf("HitTest: link uri %s\n", ewk_hit_test_link_uri_get(ht));
   printf("HitTest: link title %s\n", ewk_hit_test_link_title_get(ht));
@@ -1410,6 +1406,16 @@ void on_mouse_up(void* data, Evas* canvas, Evas_Object* obj, void* event_info)
   if (attr_hash) {
     eina_hash_foreach(attr_hash, _util_print_hit_test_result_hash_fn, NULL);
   }
+
+}
+
+void on_mouse_up(void* data, Evas* canvas, Evas_Object* obj, void* event_info)
+{
+  Evas_Event_Mouse_Up* event = (Evas_Event_Mouse_Up*)event_info;
+  if (!evas_key_modifier_is_set(event->modifiers, "Shift"))
+      return;
+
+  ewk_view_hit_test_request(obj, event->canvas.x, event->canvas.y, EWK_HIT_TEST_MODE_ALL, __hit_test_request_cb, NULL);
 }
 
 void __undo_size_cb(void* data, Evas_Object* obj, void* event_info)