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,
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
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)
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);
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
}
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;