e dnd - add timeout in case we don't get a finished from the other end
2 second timeout seems reasonable. could be less... but should avoid hangs.
This commit is contained in:
parent
f66ef70770
commit
c0ee372ba1
|
@ -985,6 +985,17 @@ _e_drag_update(Ecore_Window root, int x, int y, unsigned int action)
|
||||||
// printf("DND UPDATE %3.7f\n", t2); ////
|
// printf("DND UPDATE %3.7f\n", t2); ////
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_drag_timeout(void *data)
|
||||||
|
{
|
||||||
|
E_Drag *drag = data;
|
||||||
|
|
||||||
|
drag->timeout = NULL;
|
||||||
|
ERR("Drop finished response timeout...");
|
||||||
|
e_object_del(E_OBJECT(drag));
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_drag_end(int x, int y)
|
_e_drag_end(int x, int y)
|
||||||
{
|
{
|
||||||
|
@ -1025,6 +1036,7 @@ _e_drag_end(int x, int y)
|
||||||
_drag_current->cb.finished(_drag_current, dropped);
|
_drag_current->cb.finished(_drag_current, dropped);
|
||||||
_drag_current->cb.finished = NULL;
|
_drag_current->cb.finished = NULL;
|
||||||
_drag_current->ended = 1;
|
_drag_current->ended = 1;
|
||||||
|
_drag_current->timeout = ecore_timer_add(2.0, _drag_timeout, _drag_current);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1141,6 +1153,11 @@ _e_drag_free(E_Drag *drag)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
|
if (drag->timeout)
|
||||||
|
{
|
||||||
|
ecore_timer_del(drag->timeout);
|
||||||
|
drag->timeout = NULL;
|
||||||
|
}
|
||||||
if (drag == _drag_current)
|
if (drag == _drag_current)
|
||||||
{
|
{
|
||||||
E_Event_Dnd_Leave leave_ev;
|
E_Event_Dnd_Leave leave_ev;
|
||||||
|
|
|
@ -41,6 +41,7 @@ struct _E_Drag
|
||||||
Evas *evas;
|
Evas *evas;
|
||||||
Evas_Object *comp_object;
|
Evas_Object *comp_object;
|
||||||
Evas_Object *object;
|
Evas_Object *object;
|
||||||
|
Ecore_Timer *timeout;
|
||||||
|
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
int dx, dy;
|
int dx, dy;
|
||||||
|
|
Loading…
Reference in New Issue