From: prince Date: Tue, 25 Jun 2013 14:30:09 +0000 (+0530) Subject: [Genlist] Added check for proper handling of selected items. Unnecessary addition... X-Git-Tag: accepted/tizen/20130927.071315^2~131 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4ddbd18c73bafe88fd22e359d6e922c0e14b6912;p=profile%2Fmobile%2Felementary.git [Genlist] Added check for proper handling of selected items. Unnecessary addition of selected item leads to crash. Resolve PLM: P130607-2341. Change-Id: Iebbb7280ddecb988152283faa4da9bd1498bf08c --- diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 309dfcd..32d50b7 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -2638,8 +2638,11 @@ _item_select(Elm_Gen_Item *it) // Do not check selected because always select mode can be used _item_highlight(it); - it->selected = EINA_TRUE; - sd->selected = eina_list_append(sd->selected, it); + if (!it->selected) + { + it->selected = EINA_TRUE; + sd->selected = eina_list_append(sd->selected, it); + } sd->last_selected_item = (Elm_Object_Item *)it; _item_focused(it); @@ -5414,7 +5417,11 @@ _item_free_common(Elm_Gen_Item *it) it->item->unrealize_disabled = EINA_FALSE; #endif - if (it->selected) sd->selected = eina_list_remove(sd->selected, it); + if (it->selected) + { + sd->selected = eina_list_remove(sd->selected, it); + it->selected = EINA_FALSE; + } if (sd->show_item == it) sd->show_item = NULL; if (sd->anchor_item == it) { @@ -6029,8 +6036,11 @@ elm_genlist_clear(Evas_Object *obj) _item_cache_all_free(sd); sd->pan_changed = EINA_TRUE; - if (sd->selected) sd->selected = eina_list_free(sd->selected); - sd->selected = NULL; + if (sd->selected) + { + sd->selected = eina_list_free(sd->selected); + sd->selected = NULL; + } sd->anchor_item = NULL; sd->show_item = NULL;