bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=04122ec311406c689124b69fe60cf1d0f316db88

commit 04122ec311406c689124b69fe60cf1d0f316db88
Author: Marcel Hollerbach <m...@marcel-hollerbach.de>
Date:   Fri Mar 15 14:12:04 2019 +0100

    elm_gengrid: speed up update order calls
    
    update order can be quite expensive, so this here tries to skip it as
    often as possible.
    
    ref T7384
    
    Reviewed-by: SangHyeon Jade Lee <sh10233....@samsung.com>
    Differential Revision: https://phab.enlightenment.org/D8367
---
 src/lib/elementary/elm_gengrid.c                  | 9 ++++++---
 src/lib/elementary/elm_widget_gengrid.h           | 1 +
 src/lib/elementary/elm_widget_item_static_focus.c | 4 ----
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index 8f253d1b22..7617df3b07 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -1268,6 +1268,7 @@ _elm_gengrid_item_unrealize(Elm_Gen_Item *it,
    {
       ELM_GENGRID_DATA_GET_FROM_ITEM(it, sd);
       efl_ui_focus_manager_calc_unregister(sd->obj, EO_OBJ(it));
+      sd->order_dirty = EINA_TRUE;
    }
 
    evas_event_thaw(evas_object_evas_get(WIDGET(it)));
@@ -1601,6 +1602,7 @@ _item_realize(Elm_Gen_Item *it)
    if (!it->realized)
      {
         efl_ui_focus_manager_calc_register_logical(sd->obj, EO_OBJ(it), 
sd->obj, NULL);
+        sd->order_dirty = EINA_TRUE;
      }
 
    if ((it->realized) ||
@@ -4037,9 +4039,7 @@ _elm_gengrid_item_new(Elm_Gengrid_Data *sd,
      (!strcmp(it->itc->item_style, "group_index"));
    sd->item_count++;
 
-   efl_ui_focus_composition_dirty(sd->obj);
-
-  return it;
+   return it;
 }
 
 EOLIAN static void
@@ -5824,6 +5824,9 @@ _elm_gengrid_efl_ui_focus_object_setup_order(Eo *obj, 
Elm_Gengrid_Data *pd)
    Elm_Gen_Item *item;
    Eina_List *order = NULL;
 
+   if (!pd->order_dirty) return;
+   pd->order_dirty = EINA_FALSE;
+
    EINA_INLIST_FOREACH(pd->items, item)
      {
         if (item->base->disabled)
diff --git a/src/lib/elementary/elm_widget_gengrid.h 
b/src/lib/elementary/elm_widget_gengrid.h
index f17b75e8ab..dc93910041 100644
--- a/src/lib/elementary/elm_widget_gengrid.h
+++ b/src/lib/elementary/elm_widget_gengrid.h
@@ -154,6 +154,7 @@ struct _Elm_Gengrid_Data
 
    Eina_Bool                          scr_minw;
    Eina_Bool                          scr_minh;
+   Eina_Bool                          order_dirty; /* boolean flag indicating 
if there needs to be an update to the focus_order of the widget.*/
 };
 
 struct Elm_Gen_Item_Type
diff --git a/src/lib/elementary/elm_widget_item_static_focus.c 
b/src/lib/elementary/elm_widget_item_static_focus.c
index a94e80fb19..c2061ed808 100644
--- a/src/lib/elementary/elm_widget_item_static_focus.c
+++ b/src/lib/elementary/elm_widget_item_static_focus.c
@@ -54,10 +54,6 @@ _grid_realized_cb(void *data, const Efl_Event *ev)
 
    if (!elm_object_item_disabled_get(data) && !is_group)
      {
-        Elm_Widget_Item_Data *wpd = efl_data_scope_get(data, 
ELM_WIDGET_ITEM_CLASS);
-
-        //first prepare the container
-        efl_ui_focus_object_setup_order(wpd->widget);
         efl_ui_focus_object_setup_order(data);
      }
 }

-- 


Reply via email to