Back to top feature Contribution.
authorGodly T.Alias <godly.talias@samsung.com>
Fri, 27 Mar 2020 09:06:07 +0000 (14:36 +0530)
committerJongmin Lee <jm105.lee@samsung.com>
Fri, 3 Apr 2020 01:38:39 +0000 (10:38 +0900)
Change-Id: I06224bed8b8fb7cb9354d619a1338ee1802e9cbe
Signed-off-by: Suresh Kumar <suresh.ku1@samsung.com>
src/lib/elementary/elm_interface_scrollable.c
src/lib/elementary/elm_scroller.c
src/lib/elementary_tizen/elm_genlist.c
src/lib/elementary_tizen/elm_widget_genlist.h

index 124535e..c2ba594 100644 (file)
@@ -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;
index add0b83..3a33d6f 100644 (file)
@@ -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)
 {
index 9560d42..7a5a21e 100644 (file)
@@ -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);
 
index 5b86fd1..78abcc6 100644 (file)
@@ -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;