naviframe -
authorChunEon Park <chuneon.park@samsung.com>
Mon, 14 Nov 2011 10:30:28 +0000 (19:30 +0900)
committerChunEon Park <chuneon.park@samsung.com>
Mon, 14 Nov 2011 10:30:28 +0000 (19:30 +0900)
1. removed rectangle which is for the block the events instead it applies evas_object_event_freeze_set/get
2. to be processed the signals right away when the item push and pop case.

src/lib/elc_naviframe.c

index 7010679..884573c 100644 (file)
@@ -10,7 +10,6 @@ struct _Widget_Data
 {
    Eina_Inlist  *stack;
    Evas_Object  *base;
-   Evas_Object     *rect;
    Eina_Bool     preserve: 1;
    Eina_Bool     auto_pushed: 1;
    Eina_Bool     freeze_events: 1;
@@ -88,7 +87,6 @@ static void _resize(void *data,
                     Evas *e,
                     Evas_Object *obj,
                     void *event_info);
-static void _hide(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _title_clicked(void *data, Evas_Object *obj,
                            const char *emission,
                            const char *source);
@@ -190,8 +188,6 @@ _theme_hook(Evas_Object *obj)
 
    _elm_widget_mirrored_reload(obj);
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
-
-   evas_object_hide(wd->rect);
 }
 
 static void _emit_hook(Evas_Object *obj,
@@ -453,13 +449,6 @@ _move(void *data __UNUSED__,
       Evas_Object *obj,
       void *event_info __UNUSED__)
 {
-   Evas_Coord x, y;
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   evas_object_geometry_get(obj, &x, &y, NULL, NULL);
-   evas_object_move(wd->rect, x, y);
-
    _sizing_eval(obj);
 }
 
@@ -469,29 +458,10 @@ _resize(void *data __UNUSED__,
         Evas_Object *obj,
         void *event_info __UNUSED__)
 {
-   Evas_Coord w, h;
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   evas_object_geometry_get(obj, NULL, NULL, &w, &h);
-   evas_object_resize(wd->rect, w, h);
-
    _sizing_eval(obj);
 }
 
 static void
-_hide(void *data __UNUSED__,
-      Evas *e __UNUSED__,
-      Evas_Object *obj,
-      void *event_info __UNUSED__)
-{
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-   if (wd->freeze_events)
-     evas_object_hide(wd->rect);
-}
-
-static void
 _title_clicked(void *data,
                Evas_Object *obj __UNUSED__,
                const char *emission __UNUSED__,
@@ -757,6 +727,8 @@ _pushed_finished(void *data,
    evas_object_smart_callback_call(WIDGET(it),
                                    SIG_PUSH_FINISHED,
                                    data);
+   if (wd->freeze_events)
+     evas_object_freeze_events_set(VIEW(it), EINA_FALSE);
 }
 
 static void
@@ -791,7 +763,7 @@ _show_finished(void *data,
                                    SIG_TRANSITION_FINISHED,
                                    data);
    if (wd->freeze_events)
-     evas_object_hide(wd->rect);
+     evas_object_freeze_events_set(VIEW(it), EINA_FALSE);
 }
 
 static void
@@ -893,8 +865,10 @@ _item_style_set(Elm_Naviframe_Item *navi_it, const char *item_style)
    _item_sizing_eval(navi_it);
 
    wd = elm_widget_data_get(WIDGET(navi_it));
-   if (wd && wd->freeze_events)
-     evas_object_hide(wd->rect);
+   if (!wd) return;
+
+   if (wd->freeze_events)
+     evas_object_freeze_events_set(VIEW(navi_it), EINA_FALSE);
 }
 
 static Elm_Naviframe_Item *
@@ -987,14 +961,8 @@ elm_naviframe_add(Evas_Object *parent)
    elm_widget_resize_object_set(obj, wd->base);
    _elm_theme_object_set(obj, wd->base, "naviframe", "base", "default");
 
-   //rect
-   wd->rect = evas_object_rectangle_add(e);
-   evas_object_color_set(wd->rect, 0, 0, 0, 0);
-   elm_widget_sub_object_add(obj, wd->rect);
-
    evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj);
    evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj);
-   evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide, obj);
    evas_object_smart_callbacks_descriptions_set(obj, _signals);
 
    wd->auto_pushed = EINA_TRUE;
@@ -1027,14 +995,18 @@ elm_naviframe_item_push(Evas_Object *obj,
    if (prev_it)
      {
         if (wd->freeze_events)
-          evas_object_show(wd->rect);
-
+          {
+             evas_object_freeze_events_set(VIEW(it), EINA_TRUE);
+             evas_object_freeze_events_set(VIEW(prev_it), EINA_TRUE);
+          }
         edje_object_signal_emit(VIEW(prev_it),
                                 "elm,state,cur,pushed",
                                 "elm");
         edje_object_signal_emit(VIEW(it),
                                 "elm,state,new,pushed",
                                 "elm");
+        edje_object_message_signal_process(VIEW(prev_it));
+        edje_object_message_signal_process(VIEW(it));
      }
    wd->stack = eina_inlist_append(wd->stack, EINA_INLIST_GET(it));
    return (Elm_Object_Item *) it;
@@ -1119,13 +1091,18 @@ elm_naviframe_item_pop(Evas_Object *obj)
    if (prev_it)
      {
         if (wd->freeze_events)
-          evas_object_show(wd->rect);
-        edje_object_signal_emit(it->base.view, "elm,state,cur,popped", "elm");
+          {
+             evas_object_freeze_events_set(VIEW(it), EINA_TRUE);
+             evas_object_freeze_events_set(VIEW(prev_it), EINA_TRUE);
+          }
+        edje_object_signal_emit(VIEW(it), "elm,state,cur,popped", "elm");
         evas_object_show(VIEW(prev_it));
         evas_object_raise(VIEW(prev_it));
         edje_object_signal_emit(VIEW(prev_it),
                                 "elm,state,prev,popped",
                                 "elm");
+        edje_object_message_signal_process(VIEW(it));
+        edje_object_message_signal_process(VIEW(prev_it));
      }
    else
      _item_del(it);
@@ -1178,16 +1155,20 @@ elm_naviframe_item_promote(Elm_Object_Item *it)
    prev_it = EINA_INLIST_CONTAINER_GET(wd->stack->last->prev,
                                          Elm_Naviframe_Item);
    if (wd->freeze_events)
-     evas_object_show(wd->rect);
-   edje_object_signal_emit(prev_it->base.view,
+     {
+        evas_object_freeze_events_set(VIEW(it), EINA_TRUE);
+        evas_object_freeze_events_set(VIEW(prev_it), EINA_TRUE);
+     }
+   edje_object_signal_emit(VIEW(prev_it),
                            "elm,state,cur,pushed",
                            "elm");
-   evas_object_show(navi_it->base.view);
-   evas_object_raise(navi_it->base.view);
-   edje_object_signal_emit(navi_it->base.view,
+   evas_object_show(VIEW(navi_it));
+   evas_object_raise(VIEW(navi_it));
+   edje_object_signal_emit(VIEW(navi_it),
                            "elm,state,new,pushed",
                            "elm");
-
+   edje_object_message_signal_process(VIEW(prev_it));
+   edje_object_message_signal_process(VIEW(navi_it));
 }
 
 EAPI void
@@ -1261,6 +1242,7 @@ elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
    Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
+
    //Return if new style is exsiting one.
    if (item_style)
      if (!strcmp(item_style, navi_it->style)) return;