[dev/m42][uBrowser] One point touch.
authorAntonio Gomes <a1.gomes@samsung.com>
Tue, 12 May 2015 18:25:32 +0000 (14:25 -0400)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
Up to now, single point gestures (including panning, fling,
clicking) were handled through a Mouse->to->Pointer
events conversion solution. It happens on the RWHVEfl level,
and benefits both EWK and content apps.
However, multi touch gestures (e.g. pinch zoom) were not functional.

Patch fixes that by start listening to EVAS_CALLBACK_MULTI_{DOWN,MOVE,UP}
events, and forward them to chromium's (Aura) the existing gesture
recognition machinery to get them handled.

Bug: http://107.108.218.239/bugzilla/show_bug.cgi?id=12716

Change-Id: I1662c611af8ceba5ba20398adbad9b9bb5ada844
Signed-off-by: Antonio Gomes <a1.gomes@samsung.com>
tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.cc
tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.h

index 0509b49..3c0bcb7 100644 (file)
@@ -189,11 +189,11 @@ void RenderWidgetHostViewEfl::InitAsChild(gfx::NativeView parent_view) {
   }
 
   evas_object_event_callback_add(content_image_, EVAS_CALLBACK_MOUSE_DOWN,
-      OnPointerDown, this);
+      OnMouseDown, this);
   evas_object_event_callback_add(content_image_, EVAS_CALLBACK_MOUSE_UP,
-      OnPointerUp, this);
+      OnMouseUp, this);
   evas_object_event_callback_add(content_image_, EVAS_CALLBACK_MOUSE_MOVE,
-      OnPointerMove, this);
+      OnMouseMove, this);
   evas_object_event_callback_add(content_image_, EVAS_CALLBACK_MOUSE_WHEEL,
       OnMouseWheel, this);
   evas_object_event_callback_add(content_image_, EVAS_CALLBACK_KEY_DOWN,
@@ -201,6 +201,13 @@ void RenderWidgetHostViewEfl::InitAsChild(gfx::NativeView parent_view) {
   evas_object_event_callback_add(content_image_, EVAS_CALLBACK_KEY_UP,
       OnKeyUp, this);
 
+  evas_object_event_callback_add(content_image_, EVAS_CALLBACK_MULTI_DOWN,
+      OnPointerDown, this);
+  evas_object_event_callback_add(content_image_, EVAS_CALLBACK_MULTI_MOVE,
+      OnPointerMove, this);
+  evas_object_event_callback_add(content_image_, EVAS_CALLBACK_MULTI_UP,
+      OnPointerUp, this);
+
   // IMContext calls evas() getter on 'this' so it needs to be
   // initialized after evas_ is valid
   im_context_ = IMContextEfl::Create(this);
@@ -240,11 +247,11 @@ RenderWidgetHostViewEfl::~RenderWidgetHostViewEfl() {
   }
 
   evas_object_event_callback_del(content_image_, EVAS_CALLBACK_MOUSE_DOWN,
-      OnPointerDown);
+      OnMouseDown);
   evas_object_event_callback_del(content_image_, EVAS_CALLBACK_MOUSE_UP,
-      OnPointerUp);
+      OnMouseUp);
   evas_object_event_callback_del(content_image_, EVAS_CALLBACK_MOUSE_MOVE,
-      OnPointerMove);
+      OnMouseMove);
   evas_object_event_callback_del(content_image_, EVAS_CALLBACK_MOUSE_WHEEL,
       OnMouseWheel);
   evas_object_event_callback_del(content_image_, EVAS_CALLBACK_KEY_DOWN,
@@ -252,6 +259,13 @@ RenderWidgetHostViewEfl::~RenderWidgetHostViewEfl() {
   evas_object_event_callback_del(content_image_, EVAS_CALLBACK_KEY_UP,
       OnKeyUp);
 
+  evas_object_event_callback_del(content_image_, EVAS_CALLBACK_MULTI_DOWN,
+      OnPointerDown);
+  evas_object_event_callback_del(content_image_, EVAS_CALLBACK_MULTI_MOVE,
+      OnPointerMove);
+  evas_object_event_callback_del(content_image_, EVAS_CALLBACK_MULTI_UP,
+      OnPointerUp);
+
   evas_object_del(content_image_elm_host_);
   content_image_elm_host_ = NULL;
   content_image_ = NULL;
@@ -1144,7 +1158,7 @@ void RenderWidgetHostViewEfl::OnMotionZoom(
   NOTIMPLEMENTED();
 }
 
-void RenderWidgetHostViewEfl::OnPointerDown(
+void RenderWidgetHostViewEfl::OnMouseDown(
     void* data, Evas* evas, Evas_Object* obj, void* event_info) {
   RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(data);
   if (rwhv->evas_event_handler_.get())
@@ -1163,7 +1177,16 @@ void RenderWidgetHostViewEfl::OnPointerDown(
   }
 }
 
-void RenderWidgetHostViewEfl::OnPointerUp(
+void RenderWidgetHostViewEfl::OnPointerDown(
+    void* data, Evas* evas, Evas_Object* obj, void* event_info) {
+  RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(data);
+  rwhv->Focus();
+
+  CHECK(rwhv->touch_events_enabled_);
+  rwhv->ProcessTouchEvents();
+}
+
+void RenderWidgetHostViewEfl::OnMouseUp(
     void* data, Evas* evas, Evas_Object* obj, void* event_info) {
   RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(data);
   if (rwhv->evas_event_handler_.get())
@@ -1180,7 +1203,14 @@ void RenderWidgetHostViewEfl::OnPointerUp(
   }
 }
 
-void RenderWidgetHostViewEfl::OnPointerMove(
+void RenderWidgetHostViewEfl::OnPointerUp(
+    void* data, Evas* evas, Evas_Object* obj, void* event_info) {
+  RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(data);
+  CHECK(rwhv->touch_events_enabled_);
+  rwhv->ProcessTouchEvents();
+}
+
+void RenderWidgetHostViewEfl::OnMouseMove(
     void* data, Evas* evas, Evas_Object* obj, void* event_info) {
   RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(data);
   if (rwhv->evas_event_handler_.get())
@@ -1196,6 +1226,13 @@ void RenderWidgetHostViewEfl::OnPointerMove(
   }
 }
 
+void RenderWidgetHostViewEfl::OnPointerMove(
+    void* data, Evas* evas, Evas_Object* obj, void* event_info) {
+  RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(data);
+  CHECK(rwhv->touch_events_enabled_);
+  rwhv->ProcessTouchEvents();
+}
+
 void RenderWidgetHostViewEfl::OnKeyDown(
     void* data, Evas* evas, Evas_Object* obj, void* event_info) {
   RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(data);
index eb28934..ae2d228 100644 (file)
@@ -222,6 +222,10 @@ class RenderWidgetHostViewEfl
   static void OnPointerDown(void* data, Evas*, Evas_Object*, void*);
   static void OnPointerUp(void* data, Evas*, Evas_Object*, void*);
   static void OnPointerMove(void* data, Evas*, Evas_Object*, void*);
+
+  static void OnMouseDown(void* data, Evas*, Evas_Object*, void*);
+  static void OnMouseUp(void* data, Evas*, Evas_Object*, void*);
+  static void OnMouseMove(void* data, Evas*, Evas_Object*, void*);
   static void OnMouseWheel(void* data, Evas*, Evas_Object*, void*);
   static void OnKeyDown(void*, Evas*, Evas_Object*, void*);
   static void OnKeyUp(void*, Evas*, Evas_Object*, void*);