forked from enlightenment/enlightenment
parent
03df6fca4c
commit
98d487c8df
|
@ -3745,7 +3745,11 @@ _e_border_del(E_Border *bd)
|
|||
{
|
||||
E_Event_Border_Remove *ev;
|
||||
|
||||
printf("Border is gone\n");
|
||||
if ((drag_border) && (drag_border->data == bd))
|
||||
{
|
||||
e_object_del(E_OBJECT(drag_border));
|
||||
drag_border = NULL;
|
||||
}
|
||||
if (bd->border_menu) e_menu_deactivate(bd->border_menu);
|
||||
|
||||
if (bd->border_locks_dialog)
|
||||
|
|
|
@ -883,6 +883,7 @@ _e_drag_end(Ecore_X_Window root, int x, int y)
|
|||
E_Event_Dnd_Drop ev;
|
||||
int dx, dy, dw, dh;
|
||||
Ecore_X_Window win, ignore_win[2];
|
||||
E_Drag *tmp;
|
||||
|
||||
if (!_drag_current) return;
|
||||
ignore_win[0] = _drag_current->evas_win;
|
||||
|
@ -911,8 +912,9 @@ _e_drag_end(Ecore_X_Window root, int x, int y)
|
|||
|
||||
if (_drag_current && !_xdnd)
|
||||
{
|
||||
e_object_del(E_OBJECT(_drag_current));
|
||||
tmp = _drag_current;
|
||||
_drag_current = NULL;
|
||||
e_object_del(E_OBJECT(tmp));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -951,8 +953,10 @@ _e_drag_end(Ecore_X_Window root, int x, int y)
|
|||
}
|
||||
if (_drag_current->cb.finished)
|
||||
_drag_current->cb.finished(_drag_current, dropped);
|
||||
e_object_del(E_OBJECT(_drag_current));
|
||||
|
||||
tmp = _drag_current;
|
||||
_drag_current = NULL;
|
||||
e_object_del(E_OBJECT(tmp));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1048,6 +1052,37 @@ _e_drag_free(E_Drag *drag)
|
|||
{
|
||||
int i;
|
||||
|
||||
if (drag == _drag_current)
|
||||
{
|
||||
Eina_List *l;
|
||||
E_Event_Dnd_Leave leave_ev;
|
||||
|
||||
e_grabinput_release(_drag_win, _drag_win);
|
||||
ecore_x_window_del(_drag_win);
|
||||
_drag_win = 0;
|
||||
_drag_win_root = 0;
|
||||
|
||||
leave_ev.x = 0;
|
||||
leave_ev.y = 0;
|
||||
for (l = _drop_handlers; l; l = l->next)
|
||||
{
|
||||
E_Drop_Handler *h;
|
||||
|
||||
h = l->data;
|
||||
|
||||
if ((h->active) && (h->entered))
|
||||
{
|
||||
if (h->cb.leave)
|
||||
h->cb.leave(h->cb.data, h->active_type, &leave_ev);
|
||||
_e_drag_win_hide(h);
|
||||
}
|
||||
}
|
||||
if (drag->cb.finished)
|
||||
drag->cb.finished(drag, 0);
|
||||
}
|
||||
|
||||
_drag_current = NULL;
|
||||
|
||||
_drag_list = eina_list_remove(_drag_list, drag);
|
||||
|
||||
E_FREE(drag->shape_rects);
|
||||
|
@ -1339,8 +1374,11 @@ _e_dnd_cb_event_dnd_finished(void *data, int type, void *event)
|
|||
|
||||
if (_drag_current)
|
||||
{
|
||||
e_object_del(E_OBJECT(_drag_current));
|
||||
E_Drag *tmp;
|
||||
|
||||
tmp = _drag_current;
|
||||
_drag_current = NULL;
|
||||
e_object_del(E_OBJECT(tmp));
|
||||
}
|
||||
|
||||
e_grabinput_release(_drag_win, _drag_win);
|
||||
|
|
Loading…
Reference in New Issue