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

Reply via email to