surface_id_(0),
is_modifier_key_(false),
touch_events_enabled_(false),
+ handling_disambiguation_popup_gesture_(false),
web_contents_(web_contents),
compositor_(NULL),
root_layer_(new ui::Layer(ui::LAYER_SOLID_COLOR)),
}
void RenderWidgetHostViewEfl::ShowDisambiguationPopup(const gfx::Rect& rect_pixels, const SkBitmap& zoomed_bitmap) {
+ handling_disambiguation_popup_gesture_ = true;
if (!disambiguation_popup_)
disambiguation_popup_.reset(new DisambiguationPopupEfl(content_image_, this));
disambiguation_popup_->Show(rect_pixels, zoomed_bitmap);
}
+void RenderWidgetHostViewEfl::DisambiguationPopupDismissed() {
+ handling_disambiguation_popup_gesture_ = false;
+}
+
void RenderWidgetHostViewEfl::HandleDisambiguationPopupMouseDownEvent(
Evas_Event_Mouse_Down* evas_event) {
- blink::WebMouseEvent event = MakeWebMouseEvent(
- blink::WebInputEvent::MouseDown, content_image_, evas_event);
- host_->ForwardMouseEvent(event);
+ blink::WebGestureEvent tap_down_event = MakeGestureEvent(
+ blink::WebInputEvent::GestureTapDown,
+ content_image_,
+ evas_event);
+ tap_down_event.data.tap.width = 0;
+ tap_down_event.data.tap.tapCount = 1;
+ SendGestureEvent(tap_down_event);
}
void RenderWidgetHostViewEfl::HandleDisambiguationPopupMouseUpEvent(
Evas_Event_Mouse_Up* evas_event) {
- blink::WebMouseEvent event = MakeWebMouseEvent(
- blink::WebInputEvent::MouseUp, content_image_, evas_event);
- host_->ForwardMouseEvent(event);
+ blink::WebGestureEvent tap_event = MakeGestureEvent(
+ blink::WebInputEvent::GestureTap,
+ content_image_,
+ evas_event);
+ tap_event.data.tap.width = 0;
+ tap_event.data.tap.tapCount = 1;
+ SendGestureEvent(tap_event);
}
void RenderWidgetHostViewEfl::LockCompositingSurface() {
wcve->HandleZoomGesture(event);
}
- if (event.type == blink::WebInputEvent::GestureTap ||
- event.type == blink::WebInputEvent::GestureTapCancel) {
+ if ((event.type == blink::WebInputEvent::GestureTap ||
+ event.type == blink::WebInputEvent::GestureTapCancel) &&
+ !handling_disambiguation_popup_gesture_) {
float size = 32.0f; // Default value
#if defined(OS_TIZEN_MOBILE)
size = elm_config_finger_size_get() / device_scale_factor_;
void ShowDisambiguationPopup(const gfx::Rect& rect_pixels,
const SkBitmap& zoomed_bitmap) override;
+ void DisambiguationPopupDismissed();
void HandleDisambiguationPopupMouseDownEvent(Evas_Event_Mouse_Down*);
void HandleDisambiguationPopupMouseUpEvent(Evas_Event_Mouse_Up*);
void LockCompositingSurface() override;
GLuint index_buffer_obj_;
bool touch_events_enabled_;
+ bool handling_disambiguation_popup_gesture_;
// The last scroll offset of the view.
gfx::Vector2dF last_scroll_offset_;
gfx::Point(pt.x / scale, pt.y / scale), id, event_timestamp);
}
+template WebGestureEvent MakeGestureEvent<Evas_Event_Mouse_Down>(
+ WebInputEvent::Type type, Evas_Object*, const Evas_Event_Mouse_Down* ev);
+template WebGestureEvent MakeGestureEvent<Evas_Event_Mouse_Up>(
+ WebInputEvent::Type type, Evas_Object*, const Evas_Event_Mouse_Up* ev);
+
+template <class EVT>
+WebGestureEvent MakeGestureEvent(WebInputEvent::Type type,
+ Evas_Object* view, const EVT* ev) {
+
+ WebGestureEvent event;
+ event.timeStampSeconds = ev->timestamp / 1000;
+ event.type = type;
+ event.sourceDevice = WebGestureDeviceTouchscreen;
+
+ const float sf = GetDeviceScaleFactor();
+ event.x = ev->canvas.x / sf;
+ event.y = ev->canvas.y / sf;
+
+ TranslateEvasCoordToWebKitCoord(view, event.x, event.y);
+ return event;
+}
+
}