Dear all,
I made a small patch to fix remained selection bug.
In decorate all mode, some item selection is not cleared after unset
decorate all mode.
I added to fix it.
And make unselecting common routine to a internal function.
Thanks.
Index: elementary/src/lib/elm_genlist.c
===================================================================
--- elementary/src/lib/elm_genlist.c (리비전 70346)
+++ elementary/src/lib/elm_genlist.c (작업 사본)
@@ -4208,6 +4208,27 @@
evas_object_smart_callback_call(WIDGET(it), SIG_MOVED_BEFORE, it);
}
+static void
+_unselect_previous_selected_items(Widget_Data *wd)
+{
+ if (!wd) return;
+
+ Eina_List *l;
+ Elm_Object_Item *it;
+ if (wd->multi)
+ {
+ EINA_LIST_FOREACH(wd->selected, l, it)
+ if (((Elm_Gen_Item *)it)->realized)
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+ }
+ else
+ {
+ it = elm_genlist_selected_item_get(wd->obj);
+ if ((it) && (((Elm_Gen_Item *)it)->realized))
+ elm_genlist_item_selected_set(it, EINA_FALSE);
+ }
+}
+
EAPI unsigned int
elm_genlist_items_count(const Evas_Object *obj)
{
@@ -5458,8 +5479,6 @@
Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
Widget_Data *wd = _it->wd;
- Eina_List *l;
- Elm_Object_Item *it2;
if (!wd) return;
if (!decorate_it_type) return;
@@ -5474,18 +5493,7 @@
if (!_it->itc->decorate_item_style) return;
_it->decorate_it_set = decorate_it_set;
- if (wd->multi)
- {
- EINA_LIST_FOREACH(wd->selected, l, it2)
- if (((Elm_Gen_Item *)it2)->realized)
- elm_genlist_item_selected_set(it2, EINA_FALSE);
- }
- else
- {
- it2 = elm_genlist_selected_item_get(wd->obj);
- if ((it2) && (((Elm_Gen_Item *)it2)->realized))
- elm_genlist_item_selected_set(it2, EINA_FALSE);
- }
+ _unselect_previous_selected_items(wd);
if (((wd->decorate_it_type) && (strcmp(decorate_it_type,
wd->decorate_it_type))) ||
(decorate_it_set) || ((_it == wd->mode_item) && (!decorate_it_set)))
@@ -5538,6 +5546,7 @@
list = elm_genlist_realized_items_get(obj);
if (!wd->decorate_all_mode)
{
+ _unselect_previous_selected_items(wd);
EINA_LIST_FOREACH(list, l, it)
{
if (it->item->type != ELM_GENLIST_ITEM_GROUP)
@@ -5551,7 +5560,6 @@
{
if (it->item->type != ELM_GENLIST_ITEM_GROUP)
{
- if (it->selected) _item_unselect(it);
if (it->itc->decorate_all_item_style)
_decorate_all_item_realize(it, EINA_TRUE);
}
------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel