Evas_Object *obj,
void *event_info);
static void _title_content_set(Elm_Naviframe_Item *it,
- Elm_Naviframe_Content_Item_Pair *pair,
const char *part,
Evas_Object *content);
static void _title_prev_btn_set(Elm_Naviframe_Item *it,
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
- Elm_Naviframe_Content_Item_Pair *pair = NULL;
Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
//specified parts
}
//common part
- _title_content_set(navi_it, pair, part, content);
+ _title_content_set(navi_it, part, content);
}
static Evas_Object *
static void
_title_content_set(Elm_Naviframe_Item *it,
- Elm_Naviframe_Content_Item_Pair *pair,
const char *part,
Evas_Object *content)
{
char buf[1024];
+ Elm_Naviframe_Content_Item_Pair *pair = NULL;
EINA_INLIST_FOREACH(it->content_list, pair)
if (!strcmp(part, pair->part)) break;
- if (!pair)
+ if ((pair) && (pair->content))
{
- pair = ELM_NEW(Elm_Naviframe_Content_Item_Pair);
- if (!pair)
+ if (!content)
{
- ERR("Failed to allocate new content part of the item! : naviframe=%p", WIDGET(it));
+ evas_object_del(pair->content);
+ pair->content = NULL;
return;
}
- pair->it = it;
- eina_stringshare_replace(&pair->part, part);
- it->content_list = eina_inlist_append(it->content_list,
- EINA_INLIST_GET(pair));
- }
-
- if (pair->content != content)
- {
+ if (pair->content == content) return;
evas_object_event_callback_del(pair->content,
EVAS_CALLBACK_DEL,
_title_content_del);
evas_object_del(pair->content);
- elm_widget_sub_object_add(WIDGET(it), content);
- evas_object_event_callback_add(content,
- EVAS_CALLBACK_DEL,
- _title_content_del,
- pair);
- }
- if (content)
- {
- edje_object_part_swallow(VIEW(it), part, content);
- snprintf(buf, sizeof(buf), "elm,state,%s,show", part);
+ snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
edje_object_signal_emit(VIEW(it), buf, "elm");
- pair->content = content;
- _item_sizing_eval(it);
}
else
{
- snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
- edje_object_signal_emit(VIEW(it), buf, "elm");
- pair->content = NULL;
+ pair = ELM_NEW(Elm_Naviframe_Content_Item_Pair);
+ if (!pair)
+ {
+ ERR("Failed to allocate new content part of the item! : naviframe=%p", WIDGET(it));
+ return;
+ }
+ pair->it = it;
+ eina_stringshare_replace(&pair->part, part);
+ it->content_list = eina_inlist_append(it->content_list,
+ EINA_INLIST_GET(pair));
}
+
+ elm_widget_sub_object_add(WIDGET(it), content);
+ evas_object_event_callback_add(content,
+ EVAS_CALLBACK_DEL,
+ _title_content_del,
+ pair);
+ edje_object_part_swallow(VIEW(it), part, content);
+ snprintf(buf, sizeof(buf), "elm,state,%s,show", part);
+ edje_object_signal_emit(VIEW(it), buf, "elm");
+ pair->content = content;
+ _item_sizing_eval(it);
}
static void