{
Transit_Cb_Data *cb = data;
if (!cb) return;
-
+ Evas_Object *navi_bar = NULL;
+ Evas_Object *content = NULL;
Widget_Data *wd = NULL;
Item *prev_it = cb->prev_it;
Item *it = cb->it;
- if (prev_it) wd = elm_widget_data_get(prev_it->obj);
- else if (it) wd = elm_widget_data_get(it->obj);
-
+ if (prev_it) {
+ navi_bar = prev_it->obj;
+ }
+ else if (it){
+ navi_bar = it->obj;
+ }
+
+ wd = elm_widget_data_get(navi_bar);
if (cb->pop && prev_it)
{
Eina_List *ll;
{
edje_object_signal_emit(wd->base, "elm,state,extend,title", "elm");
}
+ content = it->content;
}
edje_object_message_signal_process(wd->base);
- evas_object_smart_callback_call(it->obj, "updated", it->content);
+ evas_object_smart_callback_call(navi_bar, "updated", content);
}
static void
elm_navigationbar_pop(it->obj);
}
+static void
+_sub_del(void *data, Evas_Object *obj __UNUSED__, void *event_info)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ Evas_Object *sub = event_info;
+ Eina_List *l;
+ Item *it;
+ if (!wd) return;
+
+ if (wd->pager == sub)
+ {
+ wd->stack = eina_list_remove_list(wd->stack, l);
+ evas_object_del(wd->base);
+ return;
+ }
+}
+
+
static int
_set_button_width(Evas_Object *obj)
{
wd->pager = elm_pager_add(obj);
elm_widget_sub_object_add(obj, wd->pager);
edje_object_part_swallow(wd->base, "elm.swallow.content", wd->pager);
+ evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, NULL);
{
prev_it = ll->data;
ll = ll->prev;
- while (ll)
- {
- it = ll->data;
- if (it->obj) break;
- it = NULL;
- ll = ll->prev;
- }
+ if(ll)
+ {
+ it = ll->data;
+ }
}
//unswallow items and start trasition
_transition_complete_cb(cb);
//pop content from pager
elm_pager_content_pop(wd->pager);
+ if(prev_it && !it)
+ {
+ printf("\n\nconditions met\n");
+ evas_object_del(wd->pager);
+ }
free(cb);
}