int x, y;
E_Client *ec = NULL;
E_Client *legacy_target = e_comp_wl->selection.target;
+ int device_id = e_comp_wl_data_current_device_id_get();
+
+ if (device_id < 0)
+ {
+ e_comp_wl_data_current_device_id_set(ev->multi.device);
+ }
+ else if (device_id != ev->multi.device)
+ {
+ return ECORE_CALLBACK_RENEW;
+ }
ec = e_client_input_rect_under_pointer_get(legacy_target->desk, e_comp_wl->drag_client);
EINA_SAFETY_ON_NULL_RETURN_VAL(ec, ECORE_CALLBACK_RENEW);
E_Client *drag_client;
void *drag_source;
void *drag_offer;
+ int drag_device_id; // Ecore_Event_Mouse_Move.multi.device
E_Comp_Wl_Evas_Gl *evas_gl;
if (e_comp_wl->drag_offer)
((E_Comp_Wl_Data_Offer*)e_comp_wl->drag_offer)->dropped = EINA_TRUE;
}
+
+ e_comp_wl_data_current_device_id_set(-1);
}
static void
if (e_comp_wl->ptr.ec)
e_comp_wl_data_device_send_enter(e_comp_wl->ptr.ec);
e_comp_canvas_feed_mouse_up(0);
+
+ e_comp_wl_data_current_device_id_set(-1);
}
static void
return EINA_TRUE;
}
+EINTERN void
+e_comp_wl_data_current_device_id_set(int id)
+{
+ e_comp_wl->drag_device_id = id;
+}
+
+EINTERN int
+e_comp_wl_data_current_device_id_get(void)
+{
+ return e_comp_wl->drag_device_id;
+}
\ No newline at end of file
E_API E_Comp_Wl_Clipboard_Source *e_comp_wl_clipboard_source_create(const char *mime_type, uint32_t serial, int *fd);
E_API void e_comp_wl_data_device_only_set(struct wl_resource *data_device_res, Eina_Bool set);
E_API Eina_Bool e_comp_wl_data_device_manual_selection_set(void *data, size_t size, Eina_List *mime_list);
+EINTERN void e_comp_wl_data_current_device_id_set(int id);
+EINTERN int e_comp_wl_data_current_device_id_get(void);
# endif
#endif
_e_dnd_cb_mouse_up(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
Ecore_Event_Mouse_Button *ev = event;
+ int device_id = e_comp_wl_data_current_device_id_get();
if (ev->window != _drag_win) return ECORE_CALLBACK_PASS_ON;
+ if (ev->multi.device != device_id) return ECORE_CALLBACK_PASS_ON;
if (_drag_current && _drag_current->button_mask)
{