if (!(offer = wl_resource_get_user_data(resource)))
return;
- if (offer->drag_enter)
- wl_list_remove(&offer->ec_destroy_listener.link);
-
comp_wl = e_comp_wl_get();
_e_comp_wl_data_offer_fd_handler_del(offer);
}
static void
-_e_comp_wl_data_device_target_del(struct wl_listener *listener, void *data)
+_e_comp_wl_data_device_target_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
E_Client *ec = data;
E_Comp_Wl_Data *comp_wl;
wl_data_offer_send_source_actions(offer_res, offer->source->dnd_actions);
comp_wl->selection.target = ec;
- offer = wl_resource_get_user_data(offer_res);
- offer->ec_destroy_listener.notify = _e_comp_wl_data_device_target_del;
- e_view_event_listener_add(e_view_client_view_get(e_client_view_get(ec)), E_VIEW_DESTROY, &offer->ec_destroy_listener);
- offer->drag_enter = EINA_TRUE;
+
+ evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_DEL, _e_comp_wl_data_device_target_del, ec);
if (e_client_transform_core_enable_get(ec))
{
struct wl_resource *res;
E_Comp_Wl_Data *comp_wl;
+ evas_object_event_callback_del_full(ec->frame, EVAS_CALLBACK_DEL, _e_comp_wl_data_device_target_del, ec);
+
comp_wl = e_comp_wl_get();
if (comp_wl->selection.target == ec)
comp_wl->selection.target = NULL;