_drag_win = 0;
return 0;
}
+ drag->input_grab = EINA_TRUE;
if (!drag->object)
{
drag->cb.finished(drag, type);
drag->cb.finished = NULL;
- e_object_del(E_OBJECT(drag));
+ if (drag->input_grab)
+ {
+ e_comp_ungrab_input(1, 1);
+ drag->input_grab = EINA_FALSE;
+ }
- e_comp_ungrab_input(1, 1);
+ e_object_del(E_OBJECT(drag));
}
static void
_e_drag_free(E_Drag *drag)
{
+ Eina_Bool input_grab = drag->input_grab;
+
if (drag == _drag_current)
{
e_grabinput_release(_drag_win, _drag_win);
evas_object_hide(drag->comp_object);
E_FREE_FUNC(drag->comp_object, evas_object_del);
free(drag);
- e_comp_ungrab_input(1, 1);
+ if (input_grab)
+ e_comp_ungrab_input(1, 1);
_drag_win = 0;
}