cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3c098673abe21b743d546d367d72ef27e8fa1076

commit 3c098673abe21b743d546d367d72ef27e8fa1076
Author: Marcel Hollerbach <[email protected]>
Date:   Tue Aug 20 11:02:39 2019 +0200

    efl_ui_widget: remove x,y,w,h
    
    this is used for storing the position and size of the widget. However,
    just in elm_test this eats 2KB of ram, just for saving them. The cases
    where they have been used do not seem like a great performance hotspot,
    additionally, in the panel cases the privat data of the widget is
    achived anyways, so eo is involved and we are spending some time there
    anyways.
    
    Reviewed-by: Cedric BAIL <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D9646
---
 src/lib/elementary/efl_ui_layout.c |  5 +++--
 src/lib/elementary/efl_ui_panel.c  |  9 ++++-----
 src/lib/elementary/efl_ui_widget.c | 18 +++++-------------
 src/lib/elementary/elm_panel.c     |  7 +++----
 src/lib/elementary/elm_widget.h    |  1 -
 5 files changed, 15 insertions(+), 25 deletions(-)

diff --git a/src/lib/elementary/efl_ui_layout.c 
b/src/lib/elementary/efl_ui_layout.c
index 600ebdb41d..224ca32321 100644
--- a/src/lib/elementary/efl_ui_layout.c
+++ b/src/lib/elementary/efl_ui_layout.c
@@ -191,10 +191,11 @@ _sizing_eval(Evas_Object *obj, Efl_Ui_Layout_Data *sd, 
Elm_Layout_Data *ld)
 
    if (ld)
      {
+        Eina_Size2D size = efl_gfx_entity_size_get(sd->obj);
         if (ld->restricted_calc_w)
-          rest_w = MIN(wd->w, rest_w);
+          rest_w = MIN(size.w, rest_w);
         if (ld->restricted_calc_h)
-          rest_h = MIN(wd->h, rest_h);
+          rest_h = MIN(size.h, rest_h);
      }
 
    edje_object_size_min_restricted_calc(wd->resize_obj, &minw, &minh,
diff --git a/src/lib/elementary/efl_ui_panel.c 
b/src/lib/elementary/efl_ui_panel.c
index 1f6f21da8c..f714580f13 100644
--- a/src/lib/elementary/efl_ui_panel.c
+++ b/src/lib/elementary/efl_ui_panel.c
@@ -55,14 +55,13 @@ _mirrored_set(Evas_Object *obj,
 EOLIAN static void
 _efl_ui_panel_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Panel_Data *sd)
 {
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
-   if (sd->delete_me) return;
+  if (sd->delete_me) return;
 
    if (sd->scrollable)
      {
-        if (sd->hidden) _drawer_close(obj, wd->w, wd->h, EINA_FALSE);
-        else _drawer_open(obj, wd->w, wd->h, EINA_FALSE);
+        Eina_Size2D size = efl_gfx_entity_size_get(obj);
+        if (sd->hidden) _drawer_close(obj, size.w, size.h, EINA_FALSE);
+        else _drawer_open(obj, size.w, size.h, EINA_FALSE);
      }
 
    efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
diff --git a/src/lib/elementary/efl_ui_widget.c 
b/src/lib/elementary/efl_ui_widget.c
index ca968e1e29..abcbc9b3c1 100644
--- a/src/lib/elementary/efl_ui_widget.c
+++ b/src/lib/elementary/efl_ui_widget.c
@@ -793,17 +793,19 @@ _efl_ui_widget_efl_canvas_group_group_del(Eo *obj, 
Elm_Widget_Smart_Data *sd)
 static void
 _smart_reconfigure(Elm_Widget_Smart_Data *sd)
 {
+   Eina_Rect geom = efl_gfx_entity_geometry_get(sd->obj);
+
    if (sd->resize_obj)
      {
-        evas_object_geometry_set(sd->resize_obj, sd->x, sd->y, sd->w, sd->h);
+        efl_gfx_entity_geometry_set(sd->resize_obj, geom);
      }
    if (sd->hover_obj)
      {
-        evas_object_geometry_set(sd->hover_obj, sd->x, sd->y, sd->w, sd->h);
+        efl_gfx_entity_geometry_set(sd->hover_obj, geom);
      }
    if (sd->bg)
      {
-        evas_object_geometry_set(sd->bg, sd->x, sd->y, sd->w, sd->h);
+        efl_gfx_entity_geometry_set(sd->bg, geom);
      }
    if (sd->has_shadow)
      _elm_widget_shadow_update(sd->obj);
@@ -815,11 +817,6 @@ _efl_ui_widget_efl_gfx_entity_position_set(Eo *obj 
EINA_UNUSED, Elm_Widget_Smart
    if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, 
pos.x, pos.y))
      return;
 
-   if (sd->x == pos.x && sd->y == pos.y)
-     return;
-
-   sd->x = pos.x;
-   sd->y = pos.y;
    if (sd->resize_obj)
      efl_gfx_entity_position_set(sd->resize_obj, pos);
    if (sd->hover_obj)
@@ -839,11 +836,6 @@ _efl_ui_widget_efl_gfx_entity_size_set(Eo *obj 
EINA_UNUSED, Elm_Widget_Smart_Dat
    if (_evas_object_intercept_call(obj, EVAS_OBJECT_INTERCEPT_CB_RESIZE, 0, 
sz.w, sz.h))
      return;
 
-   if (sd->w == sz.w && sd->h == sz.h)
-     return;
-
-   sd->w = sz.w;
-   sd->h = sz.h;
    if (sd->resize_obj)
      efl_gfx_entity_size_set(sd->resize_obj, sz);
    if (sd->hover_obj)
diff --git a/src/lib/elementary/elm_panel.c b/src/lib/elementary/elm_panel.c
index 1d8eae25fe..1f6ce2e890 100644
--- a/src/lib/elementary/elm_panel.c
+++ b/src/lib/elementary/elm_panel.c
@@ -58,14 +58,13 @@ _mirrored_set(Evas_Object *obj,
 EOLIAN static void
 _elm_panel_efl_canvas_group_calculate(Eo *obj, Elm_Panel_Data *sd)
 {
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
    if (sd->delete_me) return;
 
    if (sd->scrollable)
      {
-        if (sd->hidden) _drawer_close(obj, wd->w, wd->h, EINA_FALSE);
-        else _drawer_open(obj, wd->w, wd->h, EINA_FALSE);
+        Eina_Size2D size = efl_gfx_entity_size_get(obj);
+        if (sd->hidden) _drawer_close(obj, size.w, size.h, EINA_FALSE);
+        else _drawer_open(obj, size.w, size.h, EINA_FALSE);
      }
 
    efl_canvas_group_calculate(efl_super(obj, MY_CLASS));
diff --git a/src/lib/elementary/elm_widget.h b/src/lib/elementary/elm_widget.h
index f8311f6e0e..46f7c38d9e 100644
--- a/src/lib/elementary/elm_widget.h
+++ b/src/lib/elementary/elm_widget.h
@@ -323,7 +323,6 @@ typedef struct _Elm_Widget_Smart_Data
 {
    Evas_Object                  *obj; /**< object pointer for this widget 
smart data */
    Evas_Object                  *parent_obj; /**< parent object of a widget in 
the elementary tree */
-   Evas_Coord                    x, y, w, h;
    Eina_List                    *subobjs; /**< list of widgets' sub objects in 
the elementary tree */
    Evas_Object                  *resize_obj; /**< an unique object for each 
widget that shows the look of a widget. Resize object's geometry is same as the 
widget. This resize object is different from that of window's resize object. */
    Evas_Object                  *hover_obj;

-- 


Reply via email to