Eina_Bool swipe : 1;
Eina_Bool reorder_mode : 1;
Eina_Bool reorder_pan_move : 1;
+ Eina_List *dragging_queue;
struct
{
Evas_Coord x, y;
if ((adx > minw) || (ady > minh))
{
it->dragging = EINA_TRUE;
+ it->wd->dragging_queue = eina_list_append(it->wd->dragging_queue, it);
if (it->long_timer)
{
ecore_timer_del(it->long_timer);
ecore_timer_del(it->long_timer);
it->long_timer = NULL;
}
- if (it->dragging)
+ while (it->wd->dragging_queue)
{
- it->dragging = EINA_FALSE;
- evas_object_smart_callback_call(it->base.widget, SIG_DRAG_STOP, it);
+ Elm_Genlist_Item *dragging_it = NULL;
+ dragging_it = eina_list_data_get(it->wd->dragging_queue);
+ dragging_it->dragging = EINA_FALSE;
+ evas_object_smart_callback_call(dragging_it->base.widget, SIG_DRAG_STOP, dragging_it);
+ if (dragging_it->want_unrealize)
+ {
+ _item_unrealize(dragging_it, EINA_FALSE);
+ if (dragging_it->block->want_unrealize)
+ _item_block_unrealize(it->block);
+ }
+ it->wd->dragging_queue = eina_list_remove_list(it->wd->dragging_queue,it->wd->dragging_queue);
dragged = 1;
}
if (it->swipe_timer)
it->wd->wasselected = EINA_FALSE;
return;
}
- if (dragged)
- {
- if (it->want_unrealize)
- {
- _item_unrealize(it, EINA_FALSE);
- if (it->block->want_unrealize)
- _item_block_unrealize(it->block);
- }
- }
if ((it->disabled) || (dragged) || (it->display_only)) return;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
if (it->wd->multi)