{
if (!GL_IT(it)->deco_it_view) return;
+ ELM_WIDGET_DATA_GET_OR_RETURN(GL_IT(it)->wsd->obj, wsd);
+ //TIZEN_ONLY(20191230): Stabilizations on item decorate mode
+ if (wsd->scroll_item_align_enable)
+ {
+ evas_object_image_source_visible_set(it->item->proxy, EINA_TRUE);
+ evas_object_smart_member_del(it->item->proxy);
+ evas_object_del(it->item->proxy);
+ it->item->proxy = NULL;
+ }
+
edje_object_part_unswallow(GL_IT(it)->deco_it_view, VIEW(it));
_view_clear(GL_IT(it)->deco_it_view, &(GL_IT(it)->deco_it_contents));
evas_object_del(GL_IT(it)->deco_it_view);
GL_IT(it)->deco_it_view = NULL;
+ it->down = EINA_FALSE;
+ it->dragging = EINA_FALSE;
+
+ if (it->long_timer) ecore_timer_del(it->long_timer);
+ it->long_timer = NULL;
+ //
+
_item_mouse_callbacks_add(it, VIEW(it));
evas_object_smart_member_add(VIEW(it), GL_IT(it)->wsd->pan_obj);
}
Evas_Object *c;
if (!ic) return;
+ // TIZEN_ONLY (20180315) : Item proxy caching for optimization
+ if (ic->proxy)
+ {
+ evas_object_image_source_visible_set(ic->proxy, EINA_TRUE);
+ evas_object_smart_member_del(ic->proxy);
+ evas_object_del(ic->proxy);
+ ic->proxy = NULL;
+ }
+ //
if (ic->base_view) efl_del(ic->base_view);
ic->item_class = NULL;
EINA_LIST_FREE(ic->contents, c)
if (sd->no_cache)
{
+ //TIZEN_ONLY (20180315) : Item proxy caching for optimization
+ evas_object_image_source_visible_set(it->item->proxy, EINA_TRUE);
+ evas_object_smart_member_del(it->item->proxy);
+ evas_object_del(it->item->proxy);
+ it->item->proxy = NULL;
+ //
+
if (VIEW(it)) evas_object_del(VIEW(it));
VIEW(it) = NULL;
EINA_LIST_FREE(contents, content)
ic = eina_mempool_calloc(sd->_genlist_itemcache_mp, sizeof(Item_Cache));
if (!ic)
{
+ //TIZEN_ONLY (20180315) : Item proxy caching for optimization
+ evas_object_image_source_visible_set(it->item->proxy, EINA_TRUE);
+ evas_object_smart_member_del(it->item->proxy);
+ evas_object_del(it->item->proxy);
+ it->item->proxy = NULL;
+ //
+
if (VIEW(it)) evas_object_del(VIEW(it));
VIEW(it) = NULL;
EINA_LIST_FREE(contents, content)
ic->base_view = VIEW(it);
ic->multiline = GL_IT(it)->multiline;
+ //TIZEN_ONLY (20180315) : Item proxy caching for optimization
+ ic->proxy = it->item->proxy;
+ //
ic->item_class = it->itc;
ic->contents = contents;
+
+ //TIZEN_ONLY (20180315) : Item proxy caching for optimization
+ if (it->item->proxy)
+ {
+ evas_object_hide(it->item->proxy);
+ evas_object_move(it->item->proxy, -9999, -9999);
+ }
+ //
+
evas_object_hide(ic->base_view);
evas_object_move(ic->base_view, -9999, -9999);
sd->item_cache_count++;
VIEW(it) = NULL;
+ //TIZEN_ONLY (20180315) : Item proxy caching for optimization
+ it->item->proxy = NULL;
+ //
}
static Eina_Bool
VIEW(it) = ic->base_view;
GL_IT(it)->multiline = ic->multiline;
+ //TIZEN_ONLY (20180315) : Item proxy caching for optimization
+ it->item->proxy = ic->proxy;
+ ic->proxy = NULL;
+ //
+
eina_list_free(ic->contents);
ic->contents = NULL;
//TIZEN_ONLY(20191211): Mempool for genlist
if ((!it->realized)) return;
_decorate_item_unrealize(it);
+
+ // TIZEN_ONLY(20190530) : Stabilizations for item decorate mode
+ Elm_Genlist_Data *sd = GL_IT(it)->wsd;
+ ELM_WIDGET_DATA_GET_OR_RETURN(sd->obj, wsd);
+
+ const char *vi_effect = edje_object_data_get(VIEW(it), "vi_effect");
+ if (wsd->scroll_item_align_enable && vi_effect && !strcmp(vi_effect, "on"))
+ {
+ Evas_Object *clip = evas_object_clip_get(VIEW(it));
+ if (clip) evas_object_data_set(VIEW(it), "view,clip", clip);
+ else clip = evas_object_data_get(VIEW(it), "view,clip");
+
+ it->item->proxy = evas_object_image_filled_add(evas_object_evas_get(sd->obj));
+ evas_object_smart_member_add(it->item->proxy, sd->pan_obj);
+ evas_object_clip_set(it->item->proxy, clip);
+ if (evas_object_clip_get(VIEW(it))) evas_object_clip_unset(VIEW(it));
+#ifdef GENLIST_FX_SUPPORT
+ if (it->clip) evas_object_del(it->clip);
+ it->clip = NULL;
+#endif
+ evas_object_image_source_set(it->item->proxy, VIEW(it));
+ evas_object_image_source_visible_set(it->item->proxy, EINA_FALSE);
+ evas_object_image_source_events_set(it->item->proxy, EINA_TRUE);
+ evas_object_image_source_clip_set(it->item->proxy, EINA_FALSE);
+ evas_object_size_hint_min_set(it->item->proxy, GL_IT(it)->w, GL_IT(it)->h);
+ evas_object_repeat_events_set(it->item->proxy, EINA_TRUE);
+ _changed(sd->pan_obj);
+ }
+ //
}
static void
{
char buf[1024];
if (GL_IT(it)->deco_it_view || !it->itc->decorate_item_style) return;
+ ELM_WIDGET_DATA_GET_OR_RETURN(GL_IT(it)->wsd->obj, wsd);
// Before adding & swallowing, delete it from smart member
evas_object_smart_member_del(VIEW(it));
+ //TIZEN_ONLY(20191230): Stabilizations for item decorate mode
+ if (wsd->scroll_item_align_enable)
+ evas_object_del(GL_IT(it)->proxy);
+ //
GL_IT(it)->deco_it_view = _view_create(it, it->itc->decorate_item_style);
edje_object_part_swallow
edje_object_signal_emit(GL_IT(it)->deco_it_view, buf, "elm");
edje_object_signal_emit(VIEW(it), buf, "elm");
+ //TIZEN_ONLY(20191230): Stabilizations for item decorate mode
+ if (wsd->scroll_item_align_enable)
+ {
+ Evas_Object *clip = evas_object_clip_get(GL_IT(it)->deco_it_view);
+ if (clip) evas_object_data_set(GL_IT(it)->deco_it_view, "view,clip", clip);
+ else clip = evas_object_data_get(GL_IT(it)->deco_it_view, "view,clip");
+
+ GL_IT(it)->proxy = evas_object_image_filled_add(evas_object_evas_get(GL_IT(it)->wsd->obj));
+ evas_object_smart_member_add(GL_IT(it)->proxy, GL_IT(it)->wsd->pan_obj);
+ evas_object_clip_set(GL_IT(it)->proxy, clip);
+ if (evas_object_clip_get(GL_IT(it)->deco_it_view)) evas_object_clip_unset(GL_IT(it)->deco_it_view);
+ evas_object_image_source_set(GL_IT(it)->proxy, GL_IT(it)->deco_it_view);
+ evas_object_image_source_visible_set(GL_IT(it)->proxy, EINA_FALSE);
+ evas_object_image_source_events_set(GL_IT(it)->proxy, EINA_TRUE);
+ evas_object_image_source_clip_set(GL_IT(it)->proxy, EINA_FALSE);
+ evas_object_size_hint_min_set(GL_IT(it)->proxy, GL_IT(it)->w, GL_IT(it)->h);
+ evas_object_repeat_events_set(GL_IT(it)->proxy, EINA_TRUE);
+ }
+ //
+
_item_mouse_callbacks_add(it, GL_IT(it)->deco_it_view);
// Redwood Only
_item_mouse_callbacks_del(it, VIEW(it));
+ // TIZEN_ONLY(20191230): Stabilizations for item decorate mode
+ _changed(GL_IT(it)->wsd->pan_obj);
+ //
}
#if 0
sd->del_fx.items = eina_list_remove(sd->del_fx.items, it);
sd->del_fx.pending_items = eina_list_remove(sd->del_fx.pending_items, it);
sd->add_fx.items = eina_list_remove(sd->add_fx.items, it);
+ if (it->clip) evas_object_del(it->clip);
+ it->clip = NULL;
#endif
if (GL_IT(it)->rel)