diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index 7e6bb9b504..11b4b54120 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -490,6 +490,9 @@ EAPI void ecore_wl2_dnd_drag_start(Ecore_Wl2_Input *input, Ecore_Wl2_Window *win /* TODO: doxy */ EAPI Eina_Bool ecore_wl2_dnd_drag_get(Ecore_Wl2_Input *input, const char *type); +/* TODO: doxy */ +EAPI void ecore_wl2_dnd_drag_end(Ecore_Wl2_Input *input); + /* # ifdef __cplusplus */ /* } */ /* # endif */ diff --git a/src/lib/ecore_wl2/ecore_wl2_dnd.c b/src/lib/ecore_wl2/ecore_wl2_dnd.c index 087fe51561..43c8baf3ff 100644 --- a/src/lib/ecore_wl2/ecore_wl2_dnd.c +++ b/src/lib/ecore_wl2/ecore_wl2_dnd.c @@ -287,3 +287,24 @@ ecore_wl2_dnd_drag_get(Ecore_Wl2_Input *input, const char *type) return EINA_TRUE; } + +EAPI void +ecore_wl2_dnd_drag_end(Ecore_Wl2_Input *input) +{ + EINA_SAFETY_ON_NULL_RETURN(input); + + if (input->data.types.data) + { + char **t; + + wl_array_for_each(t, &input->data.types) + free(*t); + wl_array_release(&input->data.types); + wl_array_init(&input->data.types); + } + + if (input->data.source) wl_data_source_destroy(input->data.source); + input->data.source = NULL; + + /* TODO: Raise dnd end event */ +}