OnMouseUp, this);
evas_object_event_callback_add(content_image_, EVAS_CALLBACK_MOUSE_MOVE,
OnMouseMove, this);
+ evas_object_event_callback_add(content_image_, EVAS_CALLBACK_MOUSE_OUT,
+ OnMouseOut, 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,
OnMouseUp);
evas_object_event_callback_del(content_image_, EVAS_CALLBACK_MOUSE_MOVE,
OnMouseMove);
+ evas_object_event_callback_del(content_image_, EVAS_CALLBACK_MOUSE_OUT,
+ OnMouseOut);
evas_object_event_callback_del(content_image_, EVAS_CALLBACK_MOUSE_WHEEL,
OnMouseWheel);
evas_object_event_callback_del(content_image_, EVAS_CALLBACK_KEY_DOWN,
}
}
+void RenderWidgetHostViewEfl::OnMouseOut(void* data,
+ Evas* evas,
+ Evas_Object* obj,
+ void* event_info) {
+ RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(data);
+ blink::WebMouseEvent event =
+ MakeWebMouseEvent(obj, static_cast<Evas_Event_Mouse_Out*>(event_info));
+ rwhv->host_->ForwardMouseEvent(event);
+}
+
void RenderWidgetHostViewEfl::OnMultiTouchDownEvent(void* data,
Evas* evas,
Evas_Object* obj,
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 OnMouseOut(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*);
return WebMouseEvent::Button::kNoButton;
}
+enum { LeftButtonPressed = 1, MiddleButtonPressed = 2, RightButtonPressed = 4 };
+
+static WebInputEvent::Modifiers EvasToWebMouseButtonsPressed(int buttons) {
+ unsigned result = 0;
+
+ if (buttons & LeftButtonPressed)
+ result |= WebInputEvent::kLeftButtonDown;
+ if (buttons & MiddleButtonPressed)
+ result |= WebInputEvent::kMiddleButtonDown;
+ if (buttons & RightButtonPressed)
+ result |= WebInputEvent::kRightButtonDown;
+
+ return static_cast<WebInputEvent::Modifiers>(result);
+}
+
static WebInputEvent::Modifiers EvasToWebModifiers(
const Evas_Modifier* modifiers) {
unsigned result = 0;
const Evas_Event_Mouse_Up*);
blink::WebMouseEvent MakeWebMouseEvent(Evas_Object* view,
+ const Evas_Event_Mouse_Out* ev) {
+ WebMouseEvent event(WebInputEvent::Type::kMouseLeave,
+ EvasToWebModifiers(ev->modifiers),
+ ui::EventTimeStampFromSeconds(ev->timestamp / 1000));
+
+ event.button = EvasToWebMouseButton(ev->buttons);
+ event.SetModifiers(event.GetModifiers() |
+ EvasToWebMouseButtonsPressed(ev->buttons));
+
+ const float sf = GetDeviceScaleFactor();
+ gfx::PointF point(ev->canvas.x / sf, ev->canvas.y / sf);
+ TranslateEvasCoordToWebKitCoord(view, &point);
+
+ Evas* evas = evas_object_evas_get(view);
+ event.SetPositionInScreen(
+ evas_coord_world_x_to_screen(evas, ev->canvas.x) / sf,
+ evas_coord_world_y_to_screen(evas, ev->canvas.y) / sf);
+ event.SetPositionInWidget(point);
+
+ return event;
+}
+
+blink::WebMouseEvent MakeWebMouseEvent(Evas_Object* view,
const Evas_Event_Mouse_Move* ev) {
WebMouseEvent event(WebInputEvent::Type::kMouseMove,
EvasToWebModifiers(ev->modifiers),
ui::EventTimeStampFromSeconds(ev->timestamp / 1000));
+ event.button = EvasToWebMouseButton(ev->buttons);
+ event.SetModifiers(event.GetModifiers() |
+ EvasToWebMouseButtonsPressed(ev->buttons));
+
const float sf = GetDeviceScaleFactor();
gfx::PointF point(ev->cur.canvas.x / sf, ev->cur.canvas.y / sf);
TranslateEvasCoordToWebKitCoord(view, &point);