elm genlist: Trigger item unhighlight on item unselect automatically. This fixes 1. longpressed item highlighted bug and 2. reorder mode item highlighted bug.

SVN revision: 79397
This commit is contained in:
Daniel Juyung Seo 2012-11-16 14:26:12 +00:00
parent 383eab67b9
commit d0a90625cf
1 changed files with 15 additions and 45 deletions

View File

@ -2824,8 +2824,9 @@ _item_del(Elm_Gen_Item *it)
static void static void
_item_unselect(Elm_Gen_Item *it) _item_unselect(Elm_Gen_Item *it)
{ {
if ((it->generation < GL_IT(it)->wsd->generation) || (!it->selected)) if ((it->generation < GL_IT(it)->wsd->generation)) return;
return; _item_unhighlight(it); /* unhighlight the item first */
if (!it->selected) return; /* then check whether the item is selected */
it->selected = EINA_FALSE; it->selected = EINA_FALSE;
GL_IT(it)->wsd->selected = eina_list_remove(GL_IT(it)->wsd->selected, it); GL_IT(it)->wsd->selected = eina_list_remove(GL_IT(it)->wsd->selected, it);
@ -2852,10 +2853,7 @@ _item_mouse_move_cb(void *data,
{ {
sd->on_hold = EINA_TRUE; sd->on_hold = EINA_TRUE;
if ((!sd->wasselected) && (!it->flipped)) if ((!sd->wasselected) && (!it->flipped))
{ _item_unselect(it);
_item_unhighlight(it);
_item_unselect(it);
}
} }
} }
if (sd->multi_touched) if (sd->multi_touched)
@ -2950,10 +2948,7 @@ _item_mouse_move_cb(void *data,
it->long_timer = NULL; it->long_timer = NULL;
} }
if (!sd->wasselected) if (!sd->wasselected)
{ _item_unselect(it);
_item_unhighlight(it);
_item_unselect(it);
}
if (dy < 0) if (dy < 0)
{ {
if (ady > adx) if (ady > adx)
@ -3169,10 +3164,7 @@ _item_multi_down_cb(void *data,
GL_IT(it)->wsd->prev_mx = ev->canvas.x; GL_IT(it)->wsd->prev_mx = ev->canvas.x;
GL_IT(it)->wsd->prev_my = ev->canvas.y; GL_IT(it)->wsd->prev_my = ev->canvas.y;
if (!GL_IT(it)->wsd->wasselected) if (!GL_IT(it)->wsd->wasselected)
{ _item_unselect(it);
_item_unhighlight(it);
_item_unselect(it);
}
GL_IT(it)->wsd->wasselected = EINA_FALSE; GL_IT(it)->wsd->wasselected = EINA_FALSE;
GL_IT(it)->wsd->longpressed = EINA_FALSE; GL_IT(it)->wsd->longpressed = EINA_FALSE;
if (it->long_timer) if (it->long_timer)
@ -3777,20 +3769,14 @@ _access_activate_cb(void *data __UNUSED__,
it->sel_cb(it); it->sel_cb(it);
} }
else else
{ _item_unselect(it);
_item_unhighlight(it);
_item_unselect(it);
}
} }
else else
{ {
if (!it->selected) if (!it->selected)
{ {
while (sd->selected) while (sd->selected)
{ _item_unselect(sd->selected->data);
_item_unhighlight(sd->selected->data);
_item_unselect(sd->selected->data);
}
} }
else else
{ {
@ -3798,11 +3784,8 @@ _access_activate_cb(void *data __UNUSED__,
Elm_Gen_Item *it2; Elm_Gen_Item *it2;
EINA_LIST_FOREACH_SAFE(sd->selected, l, l_next, it2) EINA_LIST_FOREACH_SAFE(sd->selected, l, l_next, it2)
if (it2 != it) if (it2 != it)
{ _item_unselect(it2);
_item_unhighlight(it2);
_item_unselect(it2);
}
} }
_item_highlight(it); _item_highlight(it);
it->sel_cb(it); it->sel_cb(it);
@ -3919,10 +3902,7 @@ _item_mouse_up_cb(void *data,
{ {
sd->longpressed = EINA_FALSE; sd->longpressed = EINA_FALSE;
if ((!sd->wasselected) && (!it->flipped)) if ((!sd->wasselected) && (!it->flipped))
{ _item_unselect(it);
_item_unhighlight(it);
_item_unselect(it);
}
sd->wasselected = EINA_FALSE; sd->wasselected = EINA_FALSE;
return; return;
} }
@ -3948,20 +3928,14 @@ _item_mouse_up_cb(void *data,
it->sel_cb(it); it->sel_cb(it);
} }
else else
{ _item_unselect(it);
_item_unhighlight(it);
_item_unselect(it);
}
} }
else else
{ {
if (!it->selected) if (!it->selected)
{ {
while (sd->selected) while (sd->selected)
{ _item_unselect(sd->selected->data);
_item_unhighlight(sd->selected->data);
_item_unselect(sd->selected->data);
}
} }
else else
{ {
@ -3969,11 +3943,8 @@ _item_mouse_up_cb(void *data,
Elm_Gen_Item *it2; Elm_Gen_Item *it2;
EINA_LIST_FOREACH_SAFE(sd->selected, l, l_next, it2) EINA_LIST_FOREACH_SAFE(sd->selected, l, l_next, it2)
if (it2 != it) if (it2 != it)
{ _item_unselect(it2);
_item_unhighlight(it2);
_item_unselect(it2);
}
} }
_item_highlight(it); _item_highlight(it);
it->sel_cb(it); it->sel_cb(it);
@ -6649,7 +6620,6 @@ _flip_job(void *data)
{ {
Elm_Gen_Item *it = (Elm_Gen_Item *)data; Elm_Gen_Item *it = (Elm_Gen_Item *)data;
_item_unhighlight(it);
_item_unselect(it); _item_unselect(it);
_elm_genlist_item_unrealize(it, EINA_FALSE); _elm_genlist_item_unrealize(it, EINA_FALSE);