From: Godly T.Alias Date: Fri, 27 Mar 2020 09:06:07 +0000 (+0530) Subject: Back to top feature Contribution. X-Git-Tag: submit/tizen/20200405.220557~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=34f8ec819a450b4c8c117b539b9dead0a6225080;p=platform%2Fupstream%2Fefl.git Back to top feature Contribution. Change-Id: I06224bed8b8fb7cb9354d619a1338ee1802e9cbe Signed-off-by: Suresh Kumar --- diff --git a/src/lib/elementary/elm_interface_scrollable.c b/src/lib/elementary/elm_interface_scrollable.c index 124535e..c2ba594 100644 --- a/src/lib/elementary/elm_interface_scrollable.c +++ b/src/lib/elementary/elm_interface_scrollable.c @@ -2256,7 +2256,7 @@ _elm_interface_scrollable_content_pos_set(Eo *obj, Elm_Scrollable_Smart_Interfac if (sid->cb_func.edge_bottom) sid->cb_func.edge_bottom(obj, NULL); //TIZEN_ONLY(06Feb2020): Back To Top Feature - if (sid->is_backtotop_enabled) + if (sid->is_backtotop_enabled && !elm_object_scroll_item_align_enabled_get(obj) && !_elm_atspi_enabled()) { edje_object_signal_emit(sid->edje_obj, "elm,scroller,backtotop,show", "elm"); sid->is_backtotop_shown = EINA_TRUE; diff --git a/src/lib/elementary/elm_scroller.c b/src/lib/elementary/elm_scroller.c index add0b83..3a33d6f 100644 --- a/src/lib/elementary/elm_scroller.c +++ b/src/lib/elementary/elm_scroller.c @@ -377,7 +377,16 @@ _key_action_move(Evas_Object *obj, const char *params) return EINA_TRUE; } - +//TIZEN_ONLY(28Feb2020): Do not show back to top feature when access is enabled +EOLIAN static void +_elm_scroller_efl_ui_widget_screen_reader(Eo *obj, Elm_Scroller_Data *sd EINA_UNUSED, Eina_Bool is_screen_reader) +{ + if (elm_interface_scrollable_back_to_top_enabled_get(obj) && is_screen_reader) + { + elm_object_signal_emit(obj, "elm,scroller,backtotop,hide", "elm"); + } +} +// EOLIAN static Eina_Bool _elm_scroller_efl_ui_widget_on_access_activate(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED, Efl_Ui_Activate act) { diff --git a/src/lib/elementary_tizen/elm_genlist.c b/src/lib/elementary_tizen/elm_genlist.c index 9560d42..7a5a21e 100644 --- a/src/lib/elementary_tizen/elm_genlist.c +++ b/src/lib/elementary_tizen/elm_genlist.c @@ -1577,6 +1577,13 @@ _elm_genlist_scroll_item_align_unhighlight_cb(Evas_Object *obj, void *data EINA_ //TIZEN_ONLY(20181511): : align item undetected signal evas_object_smart_callback_call(sd->obj, SIG_ALIGNED_ITEM_UNDETECTED, EO_OBJ(sd->aligned_item)); // + //TIZEN_ONLY(24Feb2020): Back To Top Feature + if (sd->is_backtotop_shown) + { + sd->is_backtotop_shown = EINA_FALSE; + edje_object_signal_emit(wsd->resize_obj, "elm,scroller,backtotop,hide", "elm"); + } + // } sd->unhighlighted = EINA_TRUE; } @@ -1639,6 +1646,28 @@ _focus_bg_show(Elm_Gen_Item *it) elm_object_part_content_set(WIDGET(it), "focus_bg_size", rectangle); edje_object_signal_emit(wd->resize_obj, SIGNAL_FOCUS_BG_SHOW, "elm"); + //TIZEN_ONLY(02Feb2020): Back To Top Implementation + if (elm_interface_scrollable_back_to_top_enabled_get(GL_IT(it)->wsd->obj)) + { + if (it == GL_IT(it)->wsd->last_alignable_item && + !GL_IT(it)->wsd->is_backtotop_shown) + { + GL_IT(it)->wsd->is_backtotop_shown = EINA_TRUE; + edje_object_signal_emit(wd->resize_obj, "elm,scroller,backtotop,show", "elm"); + } + else if (it != GL_IT(it)->wsd->last_alignable_item && + GL_IT(it)->wsd->is_backtotop_shown) + { + GL_IT(it)->wsd->is_backtotop_shown = EINA_FALSE; + edje_object_signal_emit(wd->resize_obj, "elm,scroller,backtotop,hide", "elm"); + } + } + else if (GL_IT(it)->wsd->is_backtotop_shown) + { + GL_IT(it)->wsd->is_backtotop_shown = EINA_FALSE; + edje_object_signal_emit(wd->resize_obj, "elm,scroller,backtotop,hide", "elm"); + } + // } static void @@ -6873,6 +6902,13 @@ _item_block_calc(Item_Block *itb, Evas_Coord vw EINA_UNUSED, Evas_Coord vh) itb->sd->comp_y += GL_IT(it)->minh; GL_IT(it)->is_prepend = EINA_FALSE; } + //TIZEN_ONLY(02Feb2020): Back To Top Implementation + if (!itb->sd->last_alignable_item || + (GL_IT(it)->align && + ((GL_IT(it)->block->y + it->y) > + (GL_IT(itb->sd->last_alignable_item)->block->y + itb->sd->last_alignable_item->y)))) + itb->sd->last_alignable_item = it; + // } itb->minw = minw; itb->minh = minh; @@ -7540,7 +7576,9 @@ _elm_genlist_efl_ui_widget_screen_reader(Eo *obj EINA_UNUSED, Elm_Genlist_Data * Item_Block *itb; Eina_Bool done = EINA_FALSE; Evas_Object *content = NULL; - + //TIZEN_ONLY(28Feb2020): Do not show back to top feature when access is enabled + ELM_WIDGET_DATA_GET_OR_RETURN(sd->obj, wsd); + // EINA_INLIST_FOREACH(sd->blocks, itb) { if (itb->realized) @@ -7948,10 +7986,9 @@ failed: end: if (it == sd->key_down_item) sd->key_down_item = NULL; if (it == sd->highlighted_item) sd->highlighted_item = NULL; - if (!TIZEN_PROFILE_WEARABLE) - { - if (it == sd->top_drawn_item) sd->top_drawn_item = NULL; - } + //TIZEN_ONLY(02Feb2020): Back To Top Implementation + if (it == sd->last_alignable_item) sd->last_alignable_item = NULL; + // _item_unrealize(it, EINA_FALSE); diff --git a/src/lib/elementary_tizen/elm_widget_genlist.h b/src/lib/elementary_tizen/elm_widget_genlist.h index 5b86fd1..78abcc6 100644 --- a/src/lib/elementary_tizen/elm_widget_genlist.h +++ b/src/lib/elementary_tizen/elm_widget_genlist.h @@ -218,6 +218,10 @@ struct _Elm_Genlist_Data Elm_Gen_Item *highlighted_item; Evas_Coord viewport_w, viewport_h; Elm_Gen_Item *aligned_item; + //TIZEN_ONLY(02Feb2020): Back To Top Implementation + Elm_Gen_Item *last_alignable_item; + Eina_Bool is_backtotop_shown : 1; + // Eina_List *filter_queue; Eina_List *filtered_list;