genlist : add realize check in highlight/unhlight, select functions 80/110080/1
authorSangHyeon Lee <sh10233.lee@samsung.com>
Wed, 11 Jan 2017 10:45:59 +0000 (19:45 +0900)
committerSangHyeon Lee <sh10233.lee@samsung.com>
Fri, 13 Jan 2017 01:08:39 +0000 (17:08 -0800)
Change-Id: I1c7c5b5c5e7c4cf8f21a4d9a5c74e3064f3e4441
Signed-off-by: SangHyeon Lee <sh10233.lee@samsung.com>
(cherry picked from commit b7dd4be5ff14f09cdced98ba4ac88ccabbeea065)

src/mobile_lib/elm_genlist.c

index 32f09598e8d99894824830cdb9e99bb96f4162a9..2e66a44fd69541f7776668fa7f6de3343d5de772 100644 (file)
@@ -2950,6 +2950,8 @@ _item_highlight(Elm_Gen_Item *it)
    it->highlighted = EINA_TRUE;
    sd->highlighted_item = it;
 
+   if (!it->realized) goto end;
+
 #ifndef TIZEN_PROFILE_WEARABLE
    if (sd->banded_bg_on)
      {
@@ -2988,6 +2990,7 @@ _item_highlight(Elm_Gen_Item *it)
           }
      }
 //****************************
+end:
    evas_object_smart_callback_call(WIDGET(it), SIG_HIGHLIGHTED, EO_OBJ(it));
    if (_elm_atspi_enabled())
      elm_interface_atspi_accessible_active_descendant_changed_signal_emit(WIDGET(it), EO_OBJ(it));
@@ -3002,6 +3005,8 @@ _item_unhighlight(Elm_Gen_Item *it, Eina_Bool effect EINA_UNUSED)
    it->highlighted = EINA_FALSE;
    GL_IT(it)->wsd->highlighted_item = NULL;
 
+   if (!it->realized) goto end;
+
 #ifndef TIZEN_PROFILE_WEARABLE
    if (GL_IT(it)->wsd->banded_bg_on && effect)
      {
@@ -3044,6 +3049,7 @@ _item_unhighlight(Elm_Gen_Item *it, Eina_Bool effect EINA_UNUSED)
           }
      }
    //*******************************
+end:
    evas_object_smart_callback_call(WIDGET(it), SIG_UNHIGHLIGHTED, EO_OBJ(it));
 }
 
@@ -3106,20 +3112,23 @@ _item_select(Elm_Gen_Item *it)
    sd->focus_scrollto_type = ELM_GENLIST_ITEM_SCROLLTO_IN;
    elm_object_item_focus_set(EO_OBJ(it), EINA_TRUE);
 
-   // FIXME: after evas_object_raise, mouse event callbacks(ex, UP, DOWN)
-   // can be called again eventhough already received it.
-   const char *selectraise = edje_object_data_get(VIEW(it), "selectraise");
-   if ((selectraise) && (!strcmp(selectraise, "on")))
+   if (it->realized)
      {
-        if (it->deco_all_view) evas_object_raise(it->deco_all_view);
-        else evas_object_raise(VIEW(it));
-        if ((GL_IT(it)->group_item) && (GL_IT(it)->group_item->realized))
-          evas_object_raise(GL_IT(it)->VIEW(group_item));
-     }
+        // FIXME: after evas_object_raise, mouse event callbacks(ex, UP, DOWN)
+        // can be called again eventhough already received it.
+        const char *selectraise = edje_object_data_get(VIEW(it), "selectraise");
+        if ((selectraise) && (!strcmp(selectraise, "on")))
+          {
+             if (it->deco_all_view) evas_object_raise(it->deco_all_view);
+             else evas_object_raise(VIEW(it));
+             if ((GL_IT(it)->group_item) && (GL_IT(it)->group_item->realized))
+               evas_object_raise(GL_IT(it)->VIEW(group_item));
+          }
 
-   edje_object_signal_emit
-          (VIEW(it), SIGNAL_CLICKED, "elm");
-   edje_object_message_signal_process(VIEW(it));
+        edje_object_signal_emit
+           (VIEW(it), SIGNAL_CLICKED, "elm");
+        edje_object_message_signal_process(VIEW(it));
+     }
    evas_object_ref(obj);
    if (it->func.func) it->func.func((void *)it->func.data, obj, EO_OBJ(it));
    if (EINA_MAGIC_CHECK(it->base, ELM_WIDGET_ITEM_MAGIC))