From: hyunseok yang Date: Fri, 10 Apr 2020 07:05:53 +0000 (+0900) Subject: [naviframe] Add signal for text sliding on genlist title item. X-Git-Tag: accepted/tizen/unified/20200421.150402~25 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3036b8baf80703a2da187ecf65ffbd626c012f3a;p=platform%2Fupstream%2Fefl.git [naviframe] Add signal for text sliding on genlist title item. [Model] Tizen5.5 [BinType] AP [Customer] OPEN [Issue#] N/A [Request] N/A [Problem] Add signal for text sliding on genlist title item. [Measure] N/A [Checking Method] N/A [Team] UIFW [Developer] hyunseok yang [Change Type] Commit Propagation Change-Id: I94fcfb0573f64adfc9a5eb42216545b0f3c2e45a Signed-off-by: hyunseok yang --- diff --git a/src/lib/elementary/elc_naviframe.c b/src/lib/elementary/elc_naviframe.c old mode 100644 new mode 100755 index 08c8acc..b90179a --- a/src/lib/elementary/elc_naviframe.c +++ b/src/lib/elementary/elc_naviframe.c @@ -1267,6 +1267,15 @@ _on_item_push_finished(void *data, if (sd->freeze_events) evas_object_freeze_events_set(VIEW(it), EINA_FALSE); + + if (!sd->fully_obscured) + { + //TIZEN ONLY(26Aug2019): Merged to Stem Branch + //evas_object_smart_callback_call(WIDGET(it), "item,hide,internal", VIEW(it)); + // + elm_object_signal_emit(VIEW(it), "elm,state,title_text,sliding,stop", "elm"); + edje_object_message_signal_process(elm_layout_edje_get(VIEW(it))); + } } /* "elm,state,cur,popped" @@ -1295,6 +1304,15 @@ _on_item_pop_finished(void *data, elm_widget_tree_unfocusable_set(VIEW(it), EINA_FALSE); sd->popping = eina_list_remove(sd->popping, it); + if (!sd->fully_obscured) + { + //TIZEN ONLY(26Aug2019): Merged to Stem Branch + //evas_object_smart_callback_call(WIDGET(it), "item,hide,internal", VIEW(it)); + // + elm_object_signal_emit(VIEW(it), "elm,state,title_text,sliding,stop", "elm"); + edje_object_message_signal_process(elm_layout_edje_get(VIEW(it))); + } + efl_del(EO_OBJ(it)); } @@ -1329,6 +1347,13 @@ _on_item_show_finished(void *data, it->pushing = EINA_FALSE; + if (!sd->fully_obscured) + { + evas_object_smart_callback_call(WIDGET(it), "item,show,internal", VIEW(it)); + elm_object_signal_emit(VIEW(it), "elm,state,title_text,sliding,start", "elm"); + edje_object_message_signal_process(elm_layout_edje_get(VIEW(it))); + } + //TIZEN_ONLY(20161122): add state_notify api if (EO_OBJ(it) == elm_naviframe_top_item_get(WIDGET(it))) { @@ -1455,7 +1480,12 @@ _elm_naviframe_item_efl_object_invalidate(Eo *eo_item, Elm_Naviframe_Item_Data * else elm_object_signal_emit(VIEW(prev_it), "elm,state,visible", "elm"); // - + if (!sd->fully_obscured) + { + evas_object_smart_callback_call(WIDGET(prev_it), "item,show,internal", VIEW(prev_it)); + elm_object_signal_emit(VIEW(prev_it), "elm,state,title_text,sliding,start", "elm"); + edje_object_message_signal_process(elm_layout_edje_get(VIEW(prev_it))); + } //TIZEN_ONLY(20171019): add state_notify api if (_elm_atspi_enabled()) efl_access_object_state_notify(VIEW(prev_it), ACCESS_STATE(EFL_ACCESS_STATE_TYPE_SHOWING) @@ -1515,6 +1545,7 @@ _item_new(Evas_Object *obj, (VIEW(it), EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_item_size_hints_changed, obj); + evas_object_data_set(VIEW(it), "NaviframeItem", (void *)1); elm_object_signal_callback_add (VIEW(it), "elm,action,show,finished", "*", _on_item_show_finished, it); elm_object_signal_callback_add @@ -1839,6 +1870,11 @@ _elm_naviframe_efl_canvas_group_group_del(Eo *obj, Elm_Naviframe_Data *sd) Elm_Naviframe_Op *nfo; Eina_Inlist *l = NULL; + if (sd->prop_hdl) + { + ecore_event_handler_del(sd->prop_hdl); + sd->prop_hdl = NULL; + } sd->on_deletion = EINA_TRUE; if (sd->stack) l = sd->stack->last; @@ -1880,6 +1916,68 @@ _elm_naviframe_efl_gfx_entity_visible_set(Eo *obj, Elm_Naviframe_Data *sd EINA_U } static Eina_Bool +_elm_naviframe_visibility_change(void *data, int type EINA_UNUSED, void *event) +{ + Ecore_Evas *ee; + Ecore_Wl2_Event_Window_Visibility_Change *ev; + Elm_Object_Item *eo_item; + + ev = event; + ee = ecore_evas_ecore_evas_get(evas_object_evas_get(data)); + if (!ee) return ECORE_CALLBACK_PASS_ON; /* pass on event */ + if (ev->win != ecore_evas_window_get(ee)) return ECORE_CALLBACK_PASS_ON; + + ELM_NAVIFRAME_DATA_GET(data, sd); + + if (sd->fully_obscured == ev->fully_obscured) + return ECORE_CALLBACK_PASS_ON; + + eo_item = elm_naviframe_top_item_get(data); + if (eo_item) + { + ELM_NAVIFRAME_ITEM_DATA_GET(eo_item, top); + if (ev->fully_obscured) + { + evas_object_smart_callback_call(WIDGET(top), "item,hide,internal", VIEW(top)); + sd->fully_obscured = ev->fully_obscured; + elm_object_signal_emit(VIEW(top), "elm,state,title_text,sliding,stop", "elm"); + edje_object_message_signal_process(elm_layout_edje_get(VIEW(top))); + } + else + { + evas_object_smart_callback_call(WIDGET(top), "item,show,internal", VIEW(top)); + sd->fully_obscured = ev->fully_obscured; + elm_object_signal_emit(VIEW(top), "elm,state,title_text,sliding,start", "elm"); + edje_object_message_signal_process(elm_layout_edje_get(VIEW(top))); + } + } + + return ECORE_CALLBACK_PASS_ON; +} + +//MCD_TEMP(03Mar2020): Enable parent set API +EOLIAN static void +_elm_naviframe_efl_ui_widget_parent_set(Eo *obj, Elm_Naviframe_Data *pd EINA_UNUSED, Eo *parent) +// +{ + if (!parent) goto super; + Evas_Object *top = elm_widget_top_get(parent); + Ecore_Wl_Window* win = NULL; + if (top) + win = elm_win_wl_window_get(top); + + if ((win) && (!elm_win_inlined_image_object_get(top))) + { + ELM_NAVIFRAME_DATA_GET(obj, sd); + + sd->prop_hdl = ecore_event_handler_add(ECORE_WL2_EVENT_WINDOW_VISIBILITY_CHANGE, + _elm_naviframe_visibility_change, obj); + } +super: + efl_ui_widget_parent_set(efl_super(obj, MY_CLASS), parent); +} + +static Eina_Bool _key_action_top_item_get(Evas_Object *obj, const char *params EINA_UNUSED) { Elm_Object_Item *eo_item = NULL; @@ -2020,6 +2118,9 @@ _item_push_helper(Elm_Naviframe_Item_Data *item) if (top_item) top_item->pushing = EINA_FALSE; item->pushing = EINA_TRUE; + + if (!sd->fully_obscured) + evas_object_smart_callback_call(obj, "item,hide,internal", VIEW(top_item)); } else { @@ -2037,6 +2138,13 @@ _item_push_helper(Elm_Naviframe_Item_Data *item) { if (!_tizen_effect_enabled_get(item)) elm_object_signal_emit(VIEW(item), "elm,state,visible", "elm"); + + if (!sd->fully_obscured) + { + evas_object_smart_callback_call(WIDGET(item), "item,show,internal", VIEW(item)); + elm_object_signal_emit(VIEW(item), "elm,state,title_text,sliding,start", "elm"); + edje_object_message_signal_process(elm_layout_edje_get(VIEW(item))); + } } // @@ -2218,6 +2326,16 @@ _elm_naviframe_item_insert_after(Eo *obj, Elm_Naviframe_Data *sd, Elm_Object_Ite if (!_tizen_effect_enabled_get(after)) elm_object_signal_emit(VIEW(after), "elm,state,invisible", "elm"); // + if (!sd->fully_obscured) + { + evas_object_smart_callback_call(WIDGET(after), "item,hide,internal", VIEW(after)); + elm_object_signal_emit(VIEW(after), "elm,state,title_text,sliding,stop", "elm"); + edje_object_message_signal_process(elm_layout_edje_get(VIEW(after))); + + evas_object_smart_callback_call(WIDGET(it), "item,show,internal", VIEW(it)); + elm_object_signal_emit(VIEW(it), "elm,state,title_text,sliding,start", "elm"); + edje_object_message_signal_process(elm_layout_edje_get(VIEW(it))); + } } else //TIZEN ONLY(20161208): Support tizen transition @@ -2303,6 +2421,8 @@ _elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd) (sd->stack->last->prev, Elm_Naviframe_Item_Data); sd->stack = eina_inlist_remove(sd->stack, EINA_INLIST_GET(it)); + if (!sd->fully_obscured) + evas_object_smart_callback_call(obj, "item,hide,internal", VIEW(it)); if (prev_it) { diff --git a/src/lib/elementary/elm_naviframe_eo.c b/src/lib/elementary/elm_naviframe_eo.c index 509cc8d..d2072a8 100755 --- a/src/lib/elementary/elm_naviframe_eo.c +++ b/src/lib/elementary/elm_naviframe_eo.c @@ -165,6 +165,7 @@ const Efl_Access_Action_Data *_elm_naviframe_efl_access_widget_action_elm_action void _elm_naviframe_efl_ui_widget_resize_object_set(Eo *obj, Elm_Naviframe_Data *pd, Efl_Canvas_Object *sobj); +void _elm_naviframe_efl_ui_widget_parent_set(Eo *obj, Elm_Naviframe_Data *pd, Eo *parent); Efl_Object *_elm_naviframe_efl_part_part_get(const Eo *obj, Elm_Naviframe_Data *pd, const char *name); @@ -229,6 +230,7 @@ _elm_naviframe_class_initializer(Efl_Class *klass) EFL_OBJECT_OP_FUNC(efl_layout_signal_emit, _elm_naviframe_efl_layout_signal_signal_emit), EFL_OBJECT_OP_FUNC(efl_access_widget_action_elm_actions_get, _elm_naviframe_efl_access_widget_action_elm_actions_get), EFL_OBJECT_OP_FUNC(efl_ui_widget_resize_object_set, _elm_naviframe_efl_ui_widget_resize_object_set), + EFL_OBJECT_OP_FUNC(efl_ui_widget_parent_set, _elm_naviframe_efl_ui_widget_parent_set), EFL_OBJECT_OP_FUNC(efl_part_get, _elm_naviframe_efl_part_part_get), EFL_OBJECT_OP_FUNC(efl_ui_widget_screen_reader, _elm_naviframe_efl_ui_widget_screen_reader), EFL_OBJECT_OP_FUNC(efl_ui_widget_part_access_object_get, _elm_naviframe_efl_ui_widget_part_access_object_get), diff --git a/src/lib/elementary/elm_widget_naviframe.h b/src/lib/elementary/elm_widget_naviframe.h old mode 100644 new mode 100755 index 6e752ec..e675062 --- a/src/lib/elementary/elm_widget_naviframe.h +++ b/src/lib/elementary/elm_widget_naviframe.h @@ -33,6 +33,8 @@ struct _Elm_Naviframe_Data Eina_List *ops; Evas_Object *dummy_edje; Evas_Display_Mode dispmode; + Ecore_Event_Handler *prop_hdl; + Eina_Bool fully_obscured; Eina_Bool preserve : 1; Eina_Bool on_deletion : 1;