Fix Disambiguation popup event handling.
authorAntonio Gomes <a1.gomes@samsung.com>
Thu, 3 Sep 2015 18:55:10 +0000 (14:55 -0400)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
Add the needed interfaces in RWHVEfl so that the clicking
events on the disambiguation popup get propagated down to
the engine.

Original beta/m42 patch:
- http://165.213.202.130/gerrit/#/c/86481/ , reviewed by
Janusz Majnert, arno renevier.

Reviewed by: a.renevier

Change-Id: I961b4d8e558268f3c94f66c73473ecf358ead521
Signed-off-by: Antonio Gomes <a1.gomes@samsung.com>
tizen_src/chromium_impl/content/browser/renderer_host/disambiguation_popup_efl.cc
tizen_src/chromium_impl/content/browser/renderer_host/disambiguation_popup_efl.h
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 1f64ba5..62309f8 100644 (file)
@@ -9,6 +9,7 @@
 #include "base/path_service.h"
 #include "base/files/file_path.h"
 #include "content/browser/renderer_host/render_widget_host_view_efl.h"
+#include "content/browser/renderer_host/web_event_factory_efl.h"
 #include "content/common/paths_efl.h"
 #include "ui/events/event.h"
 #include "ui/gfx/screen.h"
@@ -29,19 +30,17 @@ void _back_hard_key_cb(void* data, Evas_Object* obj, void*) {
 }
 #endif
 
-void _OnMouseUp(void* data, Evas*, Evas_Object* image, void* eventInfo) {
+void _OnMouseUp(void* data, Evas*, Evas_Object* image, void* event_info) {
   Evas_Event_Mouse_Up* up_event =
-      static_cast<Evas_Event_Mouse_Up*>(eventInfo);
-
+      static_cast<Evas_Event_Mouse_Up*>(event_info);
   DisambiguationPopupEfl* disambiguation_popup =
       static_cast<DisambiguationPopupEfl*>(data);
   disambiguation_popup->HandleMouseEventUp(up_event);
-  disambiguation_popup->Dismiss();
 }
 
-void _OnMouseDown(void* data, Evas*,Evas_Object* image, void* eventInfo) {
+void _OnMouseDown(void* data, Evas*, Evas_Object* image, void* event_info) {
   Evas_Event_Mouse_Down* down_event =
-      static_cast<Evas_Event_Mouse_Down*>(eventInfo);
+      static_cast<Evas_Event_Mouse_Down*>(event_info);
   DisambiguationPopupEfl* disambiguation_popup =
       static_cast<DisambiguationPopupEfl*>(data);
   disambiguation_popup->HandleMouseEventDown(down_event);
@@ -163,15 +162,18 @@ bool DisambiguationPopupEfl::IsVisible() {
 }
 
 void DisambiguationPopupEfl::HandleMouseEventUp(Evas_Event_Mouse_Up* up_event) {
-  HandleMouseEvent(up_event);
+  PrepareMouseEventForForward(up_event);
+  rwhv_->HandleDisambiguationPopupMouseUpEvent(up_event);
+  Dismiss();
 }
 
 void DisambiguationPopupEfl::HandleMouseEventDown(Evas_Event_Mouse_Down* down_event) {
-  HandleMouseEvent(down_event);
+  PrepareMouseEventForForward(down_event);
+  rwhv_->HandleDisambiguationPopupMouseDownEvent(down_event);
 }
 
 template<class T>
-void DisambiguationPopupEfl::HandleMouseEvent(T* event) {
+void DisambiguationPopupEfl::PrepareMouseEventForForward(T* event) {
 
   int image_x = 0, image_y = 0;
   evas_object_geometry_get(content_image_, &image_x, &image_y, 0, 0);
@@ -191,9 +193,6 @@ void DisambiguationPopupEfl::HandleMouseEvent(T* event) {
       GetPrimaryDisplay().device_scale_factor();
   event->canvas.x = target_rect_x + (parent_view_x * device_scale_factor);
   event->canvas.y = target_rect_y + (parent_view_y * device_scale_factor);
-
-#warning "[TODO] Add proper interface for this to RWHV"
-  //rwhv_->HandleEvasEvent(event);
 }
 
 void DisambiguationPopupEfl::Dismissed(void* data, Evas_Object*, void*) {
index 932e27d..b4dd238 100644 (file)
@@ -35,7 +35,7 @@ class DisambiguationPopupEfl {
 
  private:
   template<class T>
-  void HandleMouseEvent(T* event);
+  void PrepareMouseEventForForward(T* event);
 
   static void Dismissed(void*, Evas_Object*, void*);
 
index 6bd690a..1a33d5b 100755 (executable)
@@ -997,6 +997,20 @@ void RenderWidgetHostViewEfl::ShowDisambiguationPopup(const gfx::Rect& rect_pixe
   disambiguation_popup_->Show(rect_pixels, zoomed_bitmap);
 }
 
+void RenderWidgetHostViewEfl::HandleDisambiguationPopupMouseDownEvent(
+    Evas_Event_Mouse_Down* evas_event) {
+  blink::WebMouseEvent event = MakeWebMouseEvent(
+      blink::WebInputEvent::MouseDown, content_image_, evas_event);
+  host_->ForwardMouseEvent(event);
+}
+
+void RenderWidgetHostViewEfl::HandleDisambiguationPopupMouseUpEvent(
+    Evas_Event_Mouse_Up* evas_event) {
+  blink::WebMouseEvent event = MakeWebMouseEvent(
+      blink::WebInputEvent::MouseUp, content_image_, evas_event);
+  host_->ForwardMouseEvent(event);
+}
+
 bool RenderWidgetHostViewEfl::CanDispatchToConsumer(ui::GestureConsumer* consumer) {
   return this == consumer;
 }
index 8bbe93f..cdf7a48 100755 (executable)
@@ -173,6 +173,8 @@ class CONTENT_EXPORT RenderWidgetHostViewEfl
 
   void ShowDisambiguationPopup(const gfx::Rect& rect_pixels,
                                const SkBitmap& zoomed_bitmap) override;
+  void HandleDisambiguationPopupMouseDownEvent(Evas_Event_Mouse_Down*);
+  void HandleDisambiguationPopupMouseUpEvent(Evas_Event_Mouse_Up*);
 
   void OnSwapCompositorFrame(
       uint32 output_surface_id, scoped_ptr<cc::CompositorFrame> frame) override;