Add mouse in/out handling logic 67/128867/1
authorHyunho Kang <hhstark.kang@samsung.com>
Fri, 12 May 2017 00:57:35 +0000 (09:57 +0900)
committerHyunho Kang <hhstark.kang@samsung.com>
Fri, 12 May 2017 00:58:19 +0000 (09:58 +0900)
Change-Id: I4b87825c3bfb29851b1a12430c26da22245b2159
Signed-off-by: Hyunho Kang <hhstark.kang@samsung.com>
screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c

index d53e0ed..b4bf4fe 100644 (file)
@@ -468,6 +468,80 @@ static void __rs_cb_mouse_wheel(void *data, Evas *e, Evas_Object *obj, void *eve
                        ev->timestamp);
 }
 
+static void __rs_cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       screen_connector_toolkit_evas_h toolkit_evas_h = (screen_connector_toolkit_evas_h)data;
+       Evas_Event_Mouse_In *ev = event_info;
+       const char *desc = evas_device_description_get(ev->dev);
+       int x;
+       int y;
+       int w;
+       int h;
+       struct tizen_remote_surface *surface;
+
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+       LOGD("mouse in: %d %d", ev->canvas.x - x, ev->canvas.y - y);
+
+       if (desc == NULL)
+               desc = "";
+
+       surface = screen_connector_toolkit_get_trs(toolkit_evas_h->toolkit_h);
+       if (surface == NULL) {
+               LOGE("surface is NULL");
+               return;
+       }
+
+       tizen_remote_surface_transfer_mouse_event(
+                       surface,
+                       TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_IN,
+                       0,
+                       0,
+                       ev->canvas.x - x,
+                       ev->canvas.y - y,
+                       0,
+                       0,
+                       0,
+                       0,
+                       evas_device_class_get(ev->dev),
+                       evas_device_subclass_get(ev->dev),
+                       desc,
+                       ev->timestamp);
+}
+
+static void __rs_cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       screen_connector_toolkit_evas_h toolkit_evas_h = (screen_connector_toolkit_evas_h)data;
+       Evas_Event_Mouse_Out *ev = event_info;
+       const char *desc = evas_device_description_get(ev->dev);
+       struct tizen_remote_surface *surface;
+
+       LOGD("mouse out");
+       if (desc == NULL)
+               desc = "";
+
+       surface = screen_connector_toolkit_get_trs(toolkit_evas_h->toolkit_h);
+       if (surface == NULL) {
+               LOGE("surface is NULL");
+               return;
+       }
+
+       tizen_remote_surface_transfer_mouse_event(
+                       surface,
+                       TIZEN_REMOTE_SURFACE_EVENT_TYPE_MOUSE_OUT,
+                       0,
+                       0,
+                       0,
+                       0,
+                       0,
+                       0,
+                       0,
+                       0,
+                       evas_device_class_get(ev->dev),
+                       evas_device_subclass_get(ev->dev),
+                       desc,
+                       ev->timestamp);
+}
+
 static void __rs_cb_show(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
        LOGD("show");
@@ -521,6 +595,12 @@ static void __toolkit_update_cb(struct tizen_remote_surface *trs, uint32_t type,
                                EVAS_CALLBACK_MOUSE_WHEEL,
                                __rs_cb_mouse_wheel, toolkit_evas_h);
                evas_object_event_callback_add(toolkit_evas_h->img_tbm,
+                               EVAS_CALLBACK_MOUSE_IN,
+                               __rs_cb_mouse_in, toolkit_evas_h);
+               evas_object_event_callback_add(toolkit_evas_h->img_tbm,
+                               EVAS_CALLBACK_MOUSE_OUT,
+                               __rs_cb_mouse_out, toolkit_evas_h);
+               evas_object_event_callback_add(toolkit_evas_h->img_tbm,
                                EVAS_CALLBACK_SHOW,
                                __rs_cb_show, toolkit_evas_h);
                evas_object_event_callback_add(toolkit_evas_h->img_tbm,