}
static void
-_item_queue(Widget_Data *wd,
- Elm_Gen_Item *it)
+_item_queue(Widget_Data *wd,
+ Elm_Gen_Item *it,
+ Eina_Compare_Cb cb)
{
if (it->item->queued) return;
it->item->queued = EINA_TRUE;
- wd->queue = eina_list_append(wd->queue, it);
+ if (cb)
+ wd->queue = eina_list_sorted_insert(wd->queue, cb, it);
+ else
+ wd->queue = eina_list_append(wd->queue, it);
// FIXME: why does a freeze then thaw here cause some genlist
// elm_genlist_item_append() to be much much slower?
// evas_event_freeze(evas_object_evas_get(wd->obj));
it->item->rel->relcount++;
it->item->before = EINA_FALSE;
if (after->item->group_item) it->item->group_item = after->item->group_item;
- _item_queue(it->wd, it);
+ _item_queue(it->wd, it, NULL);
evas_object_smart_callback_call(WIDGET(it), SIG_MOVED, it);
}
it->item->rel->relcount++;
it->item->before = EINA_TRUE;
if (before->item->group_item) it->item->group_item = before->item->group_item;
- _item_queue(it->wd, it);
+ _item_queue(it->wd, it, NULL);
evas_object_smart_callback_call(WIDGET(it), SIG_MOVED, it);
}
it->item->rel->relcount++;
}
it->item->before = EINA_FALSE;
- _item_queue(wd, it);
+ _item_queue(wd, it, NULL);
return it;
}
it->item->rel->relcount++;
}
it->item->before = EINA_TRUE;
- _item_queue(wd, it);
+ _item_queue(wd, it, NULL);
return it;
}
it->item->rel = after;
it->item->rel->relcount++;
it->item->before = EINA_FALSE;
- _item_queue(wd, it);
+ _item_queue(wd, it, NULL);
return it;
}
it->item->rel = before;
it->item->rel->relcount++;
it->item->before = EINA_TRUE;
- _item_queue(wd, it);
+ _item_queue(wd, it, NULL);
return it;
}
it->item->rel->relcount++;
}
- _item_queue(wd, it);
+ _item_queue(wd, it, comp);
return it;
}