naviframe - fixed logic
authorChunEon Park <chuneon.park@samsung.com>
Tue, 20 Dec 2011 04:52:59 +0000 (13:52 +0900)
committerChunEon Park <chuneon.park@samsung.com>
Tue, 20 Dec 2011 04:57:45 +0000 (13:57 +0900)
when new content is coming, it needs to have some initilaization.

Change-Id: Ib6476c4cf68d8d00d7ffeff18a4ef3d2def6a3a6

src/lib/elc_naviframe.c

index 61b3dae..c5b41c2 100644 (file)
@@ -564,7 +564,26 @@ _title_content_set(Elm_Naviframe_Item *it,
    EINA_INLIST_FOREACH(it->content_list, pair)
      if (!strcmp(part, pair->part)) break;
 
-   if (!pair)
+   if (pair)
+     {
+        if (pair->content != content)
+          {
+             if (content)
+               {
+                  evas_object_event_callback_del(pair->content,
+                                                 EVAS_CALLBACK_DEL,
+                                                 _title_content_del);
+                  evas_object_event_callback_del(pair->content,
+                                                 EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+                                                 _changed_size_hints);
+                  snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
+                  edje_object_signal_emit(VIEW(it), buf, "elm");
+               }
+             evas_object_del(pair->content);
+             if (!content) return;
+          }
+     }
+   else
      {
         if (!content) return;
         pair = ELM_NEW(Elm_Naviframe_Content_Item_Pair);
@@ -578,37 +597,22 @@ _title_content_set(Elm_Naviframe_Item *it,
         it->content_list = eina_inlist_append(it->content_list,
                                               EINA_INLIST_GET(pair));
      }
-   if (pair->content && (pair->content != content))
+   if (pair->content != content)
      {
-        evas_object_event_callback_del(pair->content,
+        elm_widget_sub_object_add(WIDGET(it), content);
+        evas_object_event_callback_add(content,
                                        EVAS_CALLBACK_DEL,
-                                       _title_content_del);
-        evas_object_event_callback_del(pair->content,
+                                       _title_content_del,
+                                       pair);
+        evas_object_event_callback_add(content,
                                        EVAS_CALLBACK_CHANGED_SIZE_HINTS,
-                                       _changed_size_hints);
-        evas_object_del(pair->content);
-        snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
-        edje_object_signal_emit(VIEW(it), buf, "elm");
-     }
-   if (content)
-     {
-        if (pair->content != content)
-          {
-             elm_widget_sub_object_add(WIDGET(it), content);
-             evas_object_event_callback_add(content,
-                                            EVAS_CALLBACK_DEL,
-                                            _title_content_del,
-                                            pair);
-             evas_object_event_callback_add(content,
-                                            EVAS_CALLBACK_CHANGED_SIZE_HINTS,
-                                            _changed_size_hints,
-                                            WIDGET(it));
-             pair->content = content;
-          }
-        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");
+                                       _changed_size_hints,
+                                       WIDGET(it));
      }
+   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;
 
    _sizing_eval(WIDGET(it));
 }
@@ -798,8 +802,6 @@ _title_content_unset(Elm_Naviframe_Item *it, const char *part)
           }
      }
 
-   if (!content) return NULL;
-
    elm_widget_sub_object_del(WIDGET(it), content);
    edje_object_part_unswallow(VIEW(it), content);
    snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
@@ -815,7 +817,6 @@ _title_content_unset(Elm_Naviframe_Item *it, const char *part)
    return content;
 }
 
-
 static void
 _item_del(Elm_Naviframe_Item *it)
 {