elm genlist: Fixed reordering mode bug.

1. Fixed floating item bug while reordering.
2. Fixed moving an item out of range bug while reordering.


SVN revision: 63195
This commit is contained in:
Daniel Juyung Seo 2011-09-05 12:16:36 +00:00
parent b72f454618
commit 2ec5417dfb
1 changed files with 11 additions and 12 deletions

View File

@ -1029,6 +1029,7 @@ _long_press(void *data)
evas_object_raise(it->base.view); evas_object_raise(it->base.view);
elm_smart_scroller_hold_set(it->wd->scr, EINA_TRUE); elm_smart_scroller_hold_set(it->wd->scr, EINA_TRUE);
elm_smart_scroller_bounce_allow_set(it->wd->scr, EINA_FALSE, EINA_FALSE);
list = elm_genlist_realized_items_get(it->wd->obj); list = elm_genlist_realized_items_get(it->wd->obj);
EINA_LIST_FOREACH(list, l, it_tmp) EINA_LIST_FOREACH(list, l, it_tmp)
@ -1331,24 +1332,22 @@ _mouse_up(void *data,
{ {
Evas_Coord it_scrl_y = ev->canvas.y - it->wd->reorder_it->dy; Evas_Coord it_scrl_y = ev->canvas.y - it->wd->reorder_it->dy;
if (it->wd->reorder_rel) if (it->wd->reorder_rel && (it->wd->reorder_it->parent == it->wd->reorder_rel->parent))
{ {
if (it->wd->reorder_it->parent == it->wd->reorder_rel->parent) if (it_scrl_y <= it->wd->reorder_rel->scrl_y)
{ _item_move_before(it->wd->reorder_it, it->wd->reorder_rel);
if (it_scrl_y <= it->wd->reorder_rel->scrl_y)
_item_move_before(it->wd->reorder_it, it->wd->reorder_rel);
else
_item_move_after(it->wd->reorder_it, it->wd->reorder_rel);
}
else else
{ _item_move_after(it->wd->reorder_it, it->wd->reorder_rel);
if (it->wd->calc_job) ecore_job_del(it->wd->calc_job); }
it->wd->calc_job = ecore_job_add(_calc_job, it->wd); else
} {
if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
} }
edje_object_signal_emit(it->base.view, "elm,state,reorder,disabled", "elm"); edje_object_signal_emit(it->base.view, "elm,state,reorder,disabled", "elm");
it->wd->reorder_it = it->wd->reorder_rel = NULL; it->wd->reorder_it = it->wd->reorder_rel = NULL;
elm_smart_scroller_hold_set(it->wd->scr, EINA_FALSE); elm_smart_scroller_hold_set(it->wd->scr, EINA_FALSE);
elm_smart_scroller_bounce_allow_set(it->wd->scr, EINA_FALSE, EINA_TRUE);
} }
if (it->wd->longpressed) if (it->wd->longpressed)
{ {