diff options
author | Hyunho Kang <hhstark.kang@samsung.com> | 2017-05-12 09:57:35 +0900 |
---|---|---|
committer | Hyunho Kang <hhstark.kang@samsung.com> | 2017-05-12 09:58:19 +0900 |
commit | 18498e0b1b8785ccbfbec95a1958aed1511f8306 (patch) | |
tree | c8e673630c56347cb3d1052da2141be83123c62f /screen_connector_watcher_evas | |
parent | acf380a217578c085f28fa13b10f8cba00f5ae53 (diff) | |
download | screen-connector-18498e0b1b8785ccbfbec95a1958aed1511f8306.tar.gz screen-connector-18498e0b1b8785ccbfbec95a1958aed1511f8306.tar.bz2 screen-connector-18498e0b1b8785ccbfbec95a1958aed1511f8306.zip |
Add mouse in/out handling logic
Change-Id: I4b87825c3bfb29851b1a12430c26da22245b2159
Signed-off-by: Hyunho Kang <hhstark.kang@samsung.com>
Diffstat (limited to 'screen_connector_watcher_evas')
-rw-r--r-- | screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c b/screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c index d53e0ed..b4bf4fe 100644 --- a/screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c +++ b/screen_connector_watcher_evas/src/screen_connector_toolkit_evas.c @@ -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, |