ecore-wl2: Add event and structure for dnd motion events

Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
Chris Michael 2015-09-25 10:41:08 -04:00
parent 568f3cf617
commit 2758d6fcba
4 changed files with 25 additions and 2 deletions

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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;