elementary/naviframe - fixed logic error.
authorhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 6 Dec 2011 10:53:20 +0000 (10:53 +0000)
committerhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 6 Dec 2011 10:53:20 +0000 (10:53 +0000)
happened after shilpa's refactoring patch.

it caused the elm_naviframe_item_style_set does not work properly.

more case-by-case checking added.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@65953 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/elc_naviframe.c

index bee68fe..a394c20 100644 (file)
@@ -562,15 +562,22 @@ _title_content_set(Elm_Naviframe_Item *it,
    EINA_INLIST_FOREACH(it->content_list, pair)
      if (!strcmp(part, pair->part)) break;
 
-   if ((pair) && (pair->content))
+   if (!pair)
      {
-        if (!content)
+        if (!content) return;
+        pair = ELM_NEW(Elm_Naviframe_Content_Item_Pair);
+        if (!pair)
           {
-             evas_object_del(pair->content);
-             pair->content = NULL;
+             ERR("Failed to allocate new content part of the item! : naviframe=%p", WIDGET(it));
              return;
           }
-        if (pair->content == content) 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) && pair->content)
+     {
         evas_object_event_callback_del(pair->content,
                                        EVAS_CALLBACK_DEL,
                                        _title_content_del);
@@ -581,35 +588,26 @@ _title_content_set(Elm_Naviframe_Item *it,
         snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
         edje_object_signal_emit(VIEW(it), buf, "elm");
      }
-   else
+   if (content)
      {
-        if (!content) return;
-
-        pair = ELM_NEW(Elm_Naviframe_Content_Item_Pair);
-        if (!pair)
+        if (pair->content != content)
           {
-             ERR("Failed to allocate new content part of the item! : naviframe=%p", WIDGET(it));
-             return;
+             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;
           }
-        pair->it = it;
-        eina_stringshare_replace(&pair->part, part);
-        it->content_list = eina_inlist_append(it->content_list,
-                                              EINA_INLIST_GET(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");
      }
 
-   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));
-   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));
 }