elementary/naviframe - Apply disply mode to all views of a naviframe if the display...
authorChunEon Park <hermet@hermet.pe.kr>
Tue, 22 Jan 2013 05:28:31 +0000 (05:28 +0000)
committerChunEon Park <hermet@hermet.pe.kr>
Tue, 22 Jan 2013 05:28:31 +0000 (05:28 +0000)
SVN revision: 83055

legacy/elementary/ChangeLog
legacy/elementary/NEWS
legacy/elementary/src/lib/elc_naviframe.c
legacy/elementary/src/lib/elm_widget_naviframe.h

index 05f29c6..081046a 100644 (file)
 2013-01-19  WooHyun Jung
 
         * When string in entry is changed, access to sd should be forbidden after smart_callback_call is called.
+
+2013-01-22  ChunEon Park (Hermet)
+
+        * apply display mode to all views of a naviframe if the display mode of the views are changed.
index 116125b..1587650 100644 (file)
@@ -128,6 +128,7 @@ Fixes:
    * Fix thumb theme hook.
    * when parent of ctxpopup is resized, ctxpopup calls dismissed signal.
    * Fix memory leak of the ctxpopup and callback function to be ctxpopup obj is delivered to.
+   * Apply disply mode to all views of a naviframe if the display mode of the views are changed. Sometimes views are couldn't be recoverved to a previous status if they are stacked into more depth.
 
 Removals:
 
index 1194ccc..82d9333 100644 (file)
@@ -438,9 +438,6 @@ _item_del_pre_hook(Elm_Object_Item *it)
    nit = (Elm_Naviframe_Item *)it;
    ELM_NAVIFRAME_DATA_GET(WIDGET(nit), sd);
 
-   if (it == sd->compress_it)
-     sd->compress_it = NULL;
-
    if (nit->animator) ecore_animator_del(nit->animator);
 
    top = (it == elm_naviframe_top_item_get(WIDGET(nit)));
@@ -1062,6 +1059,22 @@ _on_item_size_hints_changed(void *data,
    elm_layout_sizing_eval(data);
 }
 
+static void
+_item_dispmode_set(Elm_Naviframe_Item *it, Evas_Display_Mode dispmode)
+{
+   if (it->dispmode == dispmode) return;
+   switch (dispmode)
+     {
+      case EVAS_DISPLAY_MODE_COMPRESS:
+         edje_object_signal_emit(VIEW(it), "display,mode,compress", "");
+         break;
+      default:
+         edje_object_signal_emit(VIEW(it), "display,mode,default", "");
+         break;
+     }
+   it->dispmode = dispmode;
+}
+
 static Elm_Naviframe_Item *
 _item_new(Evas_Object *obj,
           const Elm_Naviframe_Item *prev_it,
@@ -1138,6 +1151,8 @@ _item_new(Evas_Object *obj,
      }
 
    _item_content_set(it, content);
+   _item_dispmode_set(it, sd->dispmode);
+
    it->title_visible = EINA_TRUE;
 
    return it;
@@ -1147,33 +1162,21 @@ static void
 _on_obj_size_hints_changed(void *data __UNUSED__, Evas *e __UNUSED__,
                            Evas_Object *obj, void *event_info __UNUSED__)
 {
-   Elm_Object_Item *it;
+   Elm_Naviframe_Item *it;
    Evas_Display_Mode dispmode;
 
    ELM_NAVIFRAME_DATA_GET(obj, sd);
 
-   it = elm_naviframe_top_item_get(obj);
-   if (!it) return;
-
    dispmode = evas_object_size_hint_display_mode_get(obj);
    if (sd->dispmode == dispmode) return;
 
    sd->dispmode = dispmode;
 
-   switch (dispmode)
-     {
-      case EVAS_DISPLAY_MODE_COMPRESS:
-        elm_object_signal_emit(VIEW(it), "display,mode,compress", "");
-        sd->compress_it = it;
-        break;
-      default:
-        if (sd->compress_it)
-          elm_object_signal_emit(VIEW(sd->compress_it), "display,mode,default",
-                                 "");
-        break;
-     }
+   EINA_INLIST_FOREACH(sd->stack, it)
+     _item_dispmode_set(it, dispmode);
 }
 
+
 static void
 _elm_naviframe_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
 {
index c41d6a9..6651725 100644 (file)
@@ -24,7 +24,6 @@ struct _Elm_Naviframe_Smart_Data
    Eina_List            *popping;
    Evas_Object          *dummy_edje;
    Evas_Display_Mode     dispmode;
-   Elm_Object_Item      *compress_it;
 
    Eina_Bool             preserve : 1;
    Eina_Bool             on_deletion : 1;
@@ -45,6 +44,7 @@ struct _Elm_Naviframe_Item
    Evas_Object *title_next_btn;
    Evas_Object *title_icon;
    Ecore_Animator *animator;
+   Evas_Display_Mode     dispmode;
    const char  *style;
    const char  *title_label;
    const char  *subtitle_label;