From: Chris Michael Date: Fri, 25 Sep 2015 14:41:08 +0000 (-0400) Subject: ecore-wl2: Add event and structure for dnd motion events X-Git-Tag: upstream/1.20.0~8008^2~165 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2758d6fcbab4a5a6f96e4a51ed89396f40f76e5f;p=platform%2Fupstream%2Fefl.git ecore-wl2: Add event and structure for dnd motion events Signed-off-by: Chris Michael --- diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index ef6ccd1..3af9273 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -73,6 +73,12 @@ typedef struct _Ecore_Wl2_Event_Dnd_Leave unsigned int win, source; } Ecore_Wl2_Event_Dnd_Leave; +typedef struct _Ecore_Wl2_Event_Dnd_Motion +{ + unsigned int win, source, serial; + int x, y; +} Ecore_Wl2_Event_Dnd_Motion; + typedef enum _Ecore_Wl2_Window_Type { ECORE_WL2_WINDOW_TYPE_NONE, @@ -91,6 +97,7 @@ EAPI extern int ECORE_WL2_EVENT_FOCUS_IN; EAPI extern int ECORE_WL2_EVENT_FOCUS_OUT; EAPI extern int ECORE_WL2_EVENT_DND_ENTER; EAPI extern int ECORE_WL2_EVENT_DND_LEAVE; +EAPI extern int ECORE_WL2_EVENT_DND_MOTION; /** * @file diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c index d291b39..9ab17de 100644 --- a/src/lib/ecore_wl2/ecore_wl2.c +++ b/src/lib/ecore_wl2/ecore_wl2.c @@ -17,6 +17,7 @@ EAPI int ECORE_WL2_EVENT_FOCUS_IN = 0; EAPI int ECORE_WL2_EVENT_FOCUS_OUT = 0; EAPI int ECORE_WL2_EVENT_DND_ENTER = 0; EAPI int ECORE_WL2_EVENT_DND_LEAVE = 0; +EAPI int ECORE_WL2_EVENT_DND_MOTION = 0; static void _cb_wl_log_print(const char *format, va_list args) @@ -65,6 +66,7 @@ ecore_wl2_init(void) ECORE_WL2_EVENT_FOCUS_OUT = ecore_event_type_new(); ECORE_WL2_EVENT_DND_ENTER = ecore_event_type_new(); ECORE_WL2_EVENT_DND_LEAVE = ecore_event_type_new(); + ECORE_WL2_EVENT_DND_MOTION = ecore_event_type_new(); } wl_log_set_handler_server(_cb_wl_log_print); diff --git a/src/lib/ecore_wl2/ecore_wl2_dnd.c b/src/lib/ecore_wl2/ecore_wl2_dnd.c index ac315d6..4909142 100644 --- a/src/lib/ecore_wl2/ecore_wl2_dnd.c +++ b/src/lib/ecore_wl2/ecore_wl2_dnd.c @@ -111,10 +111,24 @@ _ecore_wl2_dnd_leave(Ecore_Wl2_Input *input) void _ecore_wl2_dnd_motion(Ecore_Wl2_Input *input, int x, int y, unsigned int timestamp) { + Ecore_Wl2_Event_Dnd_Motion *ev; + input->pointer.sx = x; input->pointer.sy = y; - /* TODO: raise dnd motion event */ + ev = calloc(1, sizeof(Ecore_Wl2_Event_Dnd_Motion)); + if (!ev) return; + + if (input->focus.pointer) + ev->win = input->focus.pointer->id; + if (input->focus.keyboard) + ev->source = input->focus.keyboard->id; + + ev->x = x; + ev->y = y; + ev->serial = timestamp; + + ecore_event_add(ECORE_WL2_EVENT_DND_MOTION, ev, NULL, NULL); } void diff --git a/src/lib/ecore_wl2/ecore_wl2_input.c b/src/lib/ecore_wl2/ecore_wl2_input.c index 0807efe..fbac931 100644 --- a/src/lib/ecore_wl2/ecore_wl2_input.c +++ b/src/lib/ecore_wl2/ecore_wl2_input.c @@ -983,7 +983,7 @@ _data_cb_leave(void *data, struct wl_data_device *data_device EINA_UNUSED) } static void -_data_cb_motion(void *data, struct wl_data_device *data_device, unsigned int timestamp, wl_fixed_t x, wl_fixed_t y) +_data_cb_motion(void *data, struct wl_data_device *data_device EINA_UNUSED, unsigned int timestamp, wl_fixed_t x, wl_fixed_t y) { Ecore_Wl2_Input *input;