jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8803040484721c15e5a7f48f4373b38d41d9d42e

commit 8803040484721c15e5a7f48f4373b38d41d9d42e
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Wed Nov 29 17:59:34 2017 +0900

    evas: Implement scale API in proper EO fashion
    
    This removes the internal function pointer for scale_update. This makes
    all relevant classes implement the scale API in EO.
    
    This removes the duplicate function in Efl.Canvas.Object and only uses
    the one from Efl.Ui.Base interface.
    
    This *seems* to be working as expected. Fingers crossed!
    
    PS: I don't like the name Efl.Ui.Base. It's an interface for a few
    common API's between Gfx, Canvas and UI levels... Maybe scale simply
    doesn't belong there.
---
 src/bin/elementary/test_gfx_filters.c       |  4 ++--
 src/lib/edje/edje_text.c                    | 14 +++++++-------
 src/lib/edje/edje_textblock.c               | 10 +++++-----
 src/lib/evas/Evas_Legacy.h                  | 30 +++++++++++++++++++++++++++++
 src/lib/evas/canvas/efl_canvas_object.eo    | 24 ++---------------------
 src/lib/evas/canvas/efl_canvas_text.eo      |  6 ++++--
 src/lib/evas/canvas/efl_canvas_vg.c         |  1 -
 src/lib/evas/canvas/evas_object_image.c     |  1 -
 src/lib/evas/canvas/evas_object_line.c      |  1 -
 src/lib/evas/canvas/evas_object_main.c      | 20 ++++++++++++++-----
 src/lib/evas/canvas/evas_object_polygon.c   |  1 -
 src/lib/evas/canvas/evas_object_rectangle.c |  1 -
 src/lib/evas/canvas/evas_object_smart.c     |  1 -
 src/lib/evas/canvas/evas_object_text.c      | 15 ++++++---------
 src/lib/evas/canvas/evas_object_textblock.c | 16 +++++++--------
 src/lib/evas/canvas/evas_object_textgrid.c  | 16 ++++++---------
 src/lib/evas/canvas/evas_text.eo            |  4 +++-
 src/lib/evas/canvas/evas_textgrid.eo        |  4 +++-
 src/lib/evas/include/evas_private.h         |  2 --
 19 files changed, 90 insertions(+), 81 deletions(-)

diff --git a/src/bin/elementary/test_gfx_filters.c 
b/src/bin/elementary/test_gfx_filters.c
index ae7ee106b0..f87e38ed7f 100644
--- a/src/bin/elementary/test_gfx_filters.c
+++ b/src/bin/elementary/test_gfx_filters.c
@@ -453,7 +453,7 @@ test_gfx_filters(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *eve
       o = text = evas_object_text_add(evas_object_evas_get(win));
       efl_event_callback_add(o, EFL_GFX_EVENT_RESIZE, _text_resize, NULL);
       efl_text_properties_font_set(o, "Sans:style=Bold", default_font_size);
-      efl_canvas_object_scale_set(text, elm_config_scale_get());
+      efl_ui_scale_set(text, elm_config_scale_get());
       efl_text_set(o, "EFL");
       efl_gfx_visible_set(o, 1);
       efl_pack(box2, o);
@@ -492,7 +492,7 @@ test_gfx_filters(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *eve
         efl_gfx_filter_data_set(o, prg_data[k].name, prg_data[k].value, 
prg_data[k].exec);
       evas_object_textblock_style_set(o, st);
       evas_object_textblock_text_markup_set(o, tbtxt);
-      efl_canvas_object_scale_set(o, elm_config_scale_get());
+      efl_ui_scale_set(o, elm_config_scale_get());
       efl_pack(box2, o);
       evas_object_resize(o, 1, 1);
    }
diff --git a/src/lib/edje/edje_text.c b/src/lib/edje/edje_text.c
index 3144a9e264..4cf2d83933 100644
--- a/src/lib/edje/edje_text.c
+++ b/src/lib/edje/edje_text.c
@@ -336,7 +336,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
         if (inlined_font) efl_text_properties_font_source_set(ep->object, 
ed->path);
         else efl_text_properties_font_source_set(ep->object, NULL);
 
-        if (ep->part->scale) efl_canvas_object_scale_set(ep->object, 
TO_DOUBLE(sc));
+        if (ep->part->scale) efl_ui_scale_set(ep->object, TO_DOUBLE(sc));
 
         efl_text_set(ep->object, text);
         /* the fit shoult not depend on font size, because it give the differet
@@ -366,7 +366,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
            if (inlined_font) efl_text_properties_font_source_set(ep->object, 
ed->path);
            else efl_text_properties_font_source_set(ep->object, NULL);
 
-           if (ep->part->scale) efl_canvas_object_scale_set(ep->object, 
TO_DOUBLE(sc));
+           if (ep->part->scale) efl_ui_scale_set(ep->object, TO_DOUBLE(sc));
 
            efl_text_properties_font_set(ep->object, font, size);
            efl_text_set(ep->object, text);
@@ -389,7 +389,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
                   if (inlined_font) 
efl_text_properties_font_source_set(ep->object, ed->path);
                   else efl_text_properties_font_source_set(ep->object, NULL);
 
-                  if (ep->part->scale) efl_canvas_object_scale_set(ep->object, 
TO_DOUBLE(sc));
+                  if (ep->part->scale) efl_ui_scale_set(ep->object, 
TO_DOUBLE(sc));
                   efl_text_properties_font_set(ep->object, font, size);
 
                   part_get_geometry(ep, &tw, &th);
@@ -401,7 +401,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
           {
              int current;
 
-             if (ep->part->scale) efl_canvas_object_scale_set(ep->object, 
TO_DOUBLE(sc));
+             if (ep->part->scale) efl_ui_scale_set(ep->object, TO_DOUBLE(sc));
              efl_text_properties_font_set(ep->object, font, 10);
 
              part_get_geometry(ep, &tw, &th);
@@ -423,7 +423,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
                     {
                        current = (top + bottom) / 2;
 
-                       if (ep->part->scale) 
efl_canvas_object_scale_set(ep->object, TO_DOUBLE(sc));
+                       if (ep->part->scale) efl_ui_scale_set(ep->object, 
TO_DOUBLE(sc));
                        efl_text_properties_font_set(ep->object, font, current);
 
                        part_get_geometry(ep, &tw, &th);
@@ -439,7 +439,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
                {
                   current++;
 
-                  if (ep->part->scale) efl_canvas_object_scale_set(ep->object, 
TO_DOUBLE(sc));
+                  if (ep->part->scale) efl_ui_scale_set(ep->object, 
TO_DOUBLE(sc));
                   efl_text_properties_font_set(ep->object, font, current);
 
                   part_get_geometry(ep, &tw, &th);
@@ -488,7 +488,7 @@ arrange_text:
    if (inlined_font) efl_text_properties_font_source_set(ep->object, ed->path);
    else efl_text_properties_font_source_set(ep->object, NULL);
 
-   if (ep->part->scale) efl_canvas_object_scale_set(ep->object, TO_DOUBLE(sc));
+   if (ep->part->scale) efl_ui_scale_set(ep->object, TO_DOUBLE(sc));
 
    efl_text_properties_font_set(ep->object, font, size);
    efl_text_set(ep->object, text);
diff --git a/src/lib/edje/edje_textblock.c b/src/lib/edje/edje_textblock.c
index 0451099fa4..08d9092e5f 100644
--- a/src/lib/edje/edje_textblock.c
+++ b/src/lib/edje/edje_textblock.c
@@ -458,7 +458,7 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
              double s = base_s;
 
              if (ep->part->scale) base_s = TO_DOUBLE(sc);
-             efl_canvas_object_scale_set(ep->object, base_s);
+             efl_ui_scale_set(ep->object, base_s);
              efl_canvas_text_size_native_get(ep->object, &tw, &th);
 
              orig_s = base_s;
@@ -467,7 +467,7 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
              {
                 orig_s = 
_edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
                                                                                
orig_s * TO_INT(params->eval.w) / tw);
-                efl_canvas_object_scale_set(ep->object, orig_s);
+                efl_ui_scale_set(ep->object, orig_s);
                 efl_canvas_text_size_native_get(ep->object, &tw, &th);
              }
              if (chosen_desc->text.fit_x)
@@ -476,7 +476,7 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
                     {
                        s = 
_edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
                                                                                
  orig_s * TO_INT(params->eval.w) / tw);
-                       efl_canvas_object_scale_set(ep->object, s);
+                       efl_ui_scale_set(ep->object, s);
                        efl_canvas_text_size_native_get(ep->object, NULL, NULL);
                     }
                }
@@ -493,7 +493,7 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
                             s = tmp_s;
                          }
 
-                       efl_canvas_object_scale_set(ep->object, s);
+                       efl_ui_scale_set(ep->object, s);
                        efl_canvas_text_size_native_get(ep->object, NULL, NULL);
                     }
                }
@@ -518,7 +518,7 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
                        break;
                      s = tmp_s;
 
-                     efl_canvas_object_scale_set(ep->object, s);
+                     efl_ui_scale_set(ep->object, s);
                      efl_canvas_text_size_native_get(ep->object, &fw, &fh);
                      i--;
                   }
diff --git a/src/lib/evas/Evas_Legacy.h b/src/lib/evas/Evas_Legacy.h
index e900090b88..de7bf35d45 100644
--- a/src/lib/evas/Evas_Legacy.h
+++ b/src/lib/evas/Evas_Legacy.h
@@ -2181,6 +2181,36 @@ EAPI Evas_Render_Op evas_object_render_op_get(const 
Evas_Object *obj);
  */
 EAPI Eina_Bool evas_object_static_clip_get(const Evas_Object *obj);
 
+/**
+ * @brief Sets the scaling factor for an Evas object. Does not affect all
+ * objects.
+ *
+ * This will multiply the object's dimension by the given factor, thus altering
+ * its geometry (width and height). Useful when you want scalable UI elements,
+ * possibly at run time.
+ *
+ * @note Only text and textblock objects have scaling change handlers. Other
+ * objects won't change visually on this call.
+ *
+ * @param[in] obj The object.
+ * @param[in] scale The scaling factor. 1.0 means no scaling, default size.
+ *
+ * @ingroup Evas_Object
+ */
+EAPI void evas_object_scale_set(Evas_Object *obj, double scale);
+
+/**
+ * @brief Retrieves the scaling factor for the given Evas object.
+ *
+ * @param[in] obj The object.
+ *
+ * @return The scaling factor. 1.0 means no scaling, default size.
+ *
+ * @ingroup Evas_Object
+ */
+EAPI double evas_object_scale_get(const Evas_Object *obj);
+
+
 #include "canvas/efl_canvas_object.eo.legacy.h"
 
 /**
diff --git a/src/lib/evas/canvas/efl_canvas_object.eo 
b/src/lib/evas/canvas/efl_canvas_object.eo
index efb1981387..29d7357852 100644
--- a/src/lib/evas/canvas/efl_canvas_object.eo
+++ b/src/lib/evas/canvas/efl_canvas_object.eo
@@ -3,7 +3,7 @@ import efl_animation_types;
 
 abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Stack, Efl.Animator,
                             Efl.Input.Interface, Efl.Gfx.Size.Hint,
-                            Efl.Gfx.Map, Efl.Loop_User)
+                            Efl.Gfx.Map, Efl.Loop_User, Efl.Ui.Base)
 {
    [[Efl canvas object abstract class]]
    legacy_prefix: evas_object;
@@ -229,27 +229,6 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, 
Efl.Gfx.Stack, Efl.Animator,
                             not ($false).]]
          }
       }
-      @property scale {
-         set {
-            [[Sets the scaling factor for an Evas object. Does not affect
-              all objects.
-
-              This will multiply the object's dimension by the given factor,
-              thus altering its geometry (width and height). Useful when
-              you want scalable UI elements, possibly at run time.
-
-              Note: Only text and textblock objects have scaling change
-              handlers. Other objects won't change visually on this call.
-            ]]
-         }
-         get {
-            [[Retrieves the scaling factor for the given Evas object.]]
-         }
-         values {
-            scale: double; [[The scaling factor. 1.0 means no scaling,
-                             default size.]]
-         }
-      }
       @property key_focus {
          [[Indicates that this object is the keyboard event receiver on
            its canvas.
@@ -703,6 +682,7 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, 
Efl.Gfx.Stack, Efl.Animator,
       Efl.Gfx.Size.Hint.hint_max { get; set; }
       Efl.Gfx.Size.Hint.hint_margin { get; set; }
       Efl.Gfx.Size.Hint.hint_weight { get; set; }
+      Efl.Ui.Base.scale { get; set; }
       Efl.Input.Interface.seat_event_filter { get; set; }
       Efl.Loop_User.loop { get; }
    }
diff --git a/src/lib/evas/canvas/efl_canvas_text.eo 
b/src/lib/evas/canvas/efl_canvas_text.eo
index e401577d18..7d04742ba2 100644
--- a/src/lib/evas/canvas/efl_canvas_text.eo
+++ b/src/lib/evas/canvas/efl_canvas_text.eo
@@ -3,8 +3,9 @@ import efl_text_types;
 struct Efl.Canvas.Text.Style; [[EFL text style data structure]]
 
 class Efl.Canvas.Text (Efl.Canvas.Object, Efl.Text, Efl.Text.Properties,
-Efl.Canvas.Filter.Internal, Efl.Text.Font, Efl.Text.Style, Efl.Text.Format,
-Efl.Text.Cursor, Efl.Text.Annotate, Efl.Text.Markup)
+                       Efl.Canvas.Filter.Internal, Efl.Text.Font,
+                       Efl.Text.Style, Efl.Text.Format, Efl.Text.Cursor,
+                       Efl.Text.Annotate, Efl.Text.Markup, Efl.Ui.Base)
 {
    [[Efl canvas text class]]
    legacy_prefix: evas_object_textblock;
@@ -350,6 +351,7 @@ Efl.Text.Cursor, Efl.Text.Annotate, Efl.Text.Markup)
       Efl.Text.Annotate.cursor_object_item_insert;
       Efl.Text.Markup.markup { set; get; }
       Efl.Text.Markup.cursor_markup_insert;
+      Efl.Ui.Base.scale { set; }
    }
    events {
       cursor,changed; [[Called when cursor changed]]
diff --git a/src/lib/evas/canvas/efl_canvas_vg.c 
b/src/lib/evas/canvas/efl_canvas_vg.c
index 4d204edd41..c8a83acbb1 100644
--- a/src/lib/evas/canvas/efl_canvas_vg.c
+++ b/src/lib/evas/canvas/efl_canvas_vg.c
@@ -57,7 +57,6 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      NULL,
-     NULL,
      NULL, // render_prepare
      NULL
 };
diff --git a/src/lib/evas/canvas/evas_object_image.c 
b/src/lib/evas/canvas/evas_object_image.c
index 9c464ac881..e565baf9b0 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -75,7 +75,6 @@ static const Evas_Object_Func object_func =
    evas_object_image_is_inside,
    NULL,
    NULL,
-   NULL,
    evas_object_image_has_opaque_rect,
    evas_object_image_get_opaque_rect,
    evas_object_image_can_map,
diff --git a/src/lib/evas/canvas/evas_object_line.c 
b/src/lib/evas/canvas/evas_object_line.c
index 1790fbf8b1..f6f9d573a8 100644
--- a/src/lib/evas/canvas/evas_object_line.c
+++ b/src/lib/evas/canvas/evas_object_line.c
@@ -84,7 +84,6 @@ static const Evas_Object_Func object_func =
    NULL,
    NULL,
    NULL,
-   NULL,
    NULL, // render_prepare
    NULL
 };
diff --git a/src/lib/evas/canvas/evas_object_main.c 
b/src/lib/evas/canvas/evas_object_main.c
index bb6eee1014..01fb1e4c04 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -2218,7 +2218,7 @@ _efl_canvas_object_anti_alias_get(Eo *eo_obj EINA_UNUSED, 
Evas_Object_Protected_
 }
 
 EOLIAN static void
-_efl_canvas_object_scale_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, 
double scale)
+_efl_canvas_object_efl_ui_base_scale_set(Eo *eo_obj, 
Evas_Object_Protected_Data *obj, double scale)
 {
    if (obj->delete_me) return;
    if (EINA_DBL_EQ(obj->cur->scale, scale)) return;
@@ -2229,13 +2229,11 @@ _efl_canvas_object_scale_set(Eo *eo_obj, 
Evas_Object_Protected_Data *obj, double
         state_write->scale = scale;
      }
    EINA_COW_STATE_WRITE_END(obj, state_write, cur);
-
    evas_object_change(eo_obj, obj);
-   if (obj->func->scale_update) obj->func->scale_update(eo_obj, obj, 
obj->private_data);
 }
 
 EOLIAN static double
-_efl_canvas_object_scale_get(Eo *eo_obj EINA_UNUSED, 
Evas_Object_Protected_Data *obj)
+_efl_canvas_object_efl_ui_base_scale_get(Eo *eo_obj EINA_UNUSED, 
Evas_Object_Protected_Data *obj)
 {
    if (obj->delete_me) return 1.0;
    return obj->cur->scale;
@@ -2309,7 +2307,7 @@ _efl_canvas_object_efl_object_dbg_info_get(Eo *eo_obj, 
Evas_Object_Protected_Dat
    layer = efl_gfx_stack_layer_get(eo_obj);
    name = efl_name_get(eo_obj); // evas_object_name_get(eo_obj);
    geom = efl_gfx_geometry_get(eo_obj);
-   scale = efl_canvas_object_scale_get(eo_obj);
+   scale = efl_ui_scale_get(eo_obj);
    min = efl_gfx_size_hint_restricted_min_get(eo_obj);
    max = efl_gfx_size_hint_max_get(eo_obj);
    //efl_gfx_size_hint_request_get(eo_obj, &requestw, &requesth);
@@ -2970,6 +2968,18 @@ evas_object_evas_get(const Eo *eo_obj)
    return efl_provider_find((Eo *) eo_obj, EVAS_CANVAS_CLASS);
 }
 
+EAPI void
+evas_object_scale_set(Evas_Object *obj, double scale)
+{
+   efl_ui_scale_set(obj, scale);
+}
+
+EAPI double
+evas_object_scale_get(const Evas_Object *obj)
+{
+   return efl_ui_scale_get(obj);
+}
+
 /* Internal EO APIs and hidden overrides */
 
 EOAPI EFL_VOID_FUNC_BODY(efl_canvas_object_legacy_ctor)
diff --git a/src/lib/evas/canvas/evas_object_polygon.c 
b/src/lib/evas/canvas/evas_object_polygon.c
index bc135d90e4..b1649de152 100644
--- a/src/lib/evas/canvas/evas_object_polygon.c
+++ b/src/lib/evas/canvas/evas_object_polygon.c
@@ -74,7 +74,6 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      NULL,
-     NULL,
      NULL, // render_prepare
      NULL
 };
diff --git a/src/lib/evas/canvas/evas_object_rectangle.c 
b/src/lib/evas/canvas/evas_object_rectangle.c
index 365b0f5015..d9e0d28b64 100644
--- a/src/lib/evas/canvas/evas_object_rectangle.c
+++ b/src/lib/evas/canvas/evas_object_rectangle.c
@@ -82,7 +82,6 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      NULL,
-     NULL,
      NULL, // render_prepare
      evas_object_rectangle_render2_walk
 };
diff --git a/src/lib/evas/canvas/evas_object_smart.c 
b/src/lib/evas/canvas/evas_object_smart.c
index 3ab72277e7..3f4dab57a9 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -120,7 +120,6 @@ static const Evas_Object_Func object_func =
    NULL,
    NULL,
    NULL,
-   NULL,
    NULL, // render_prepare
    NULL
 };
diff --git a/src/lib/evas/canvas/evas_object_text.c 
b/src/lib/evas/canvas/evas_object_text.c
index 47f37ff81c..f0bf953e54 100644
--- a/src/lib/evas/canvas/evas_object_text.c
+++ b/src/lib/evas/canvas/evas_object_text.c
@@ -114,9 +114,6 @@ static int evas_object_text_was_opaque(Evas_Object *eo_obj,
                                       Evas_Object_Protected_Data *obj,
                                       void *type_private_data);
 
-static void evas_object_text_scale_update(Evas_Object *eo_obj,
-                                         Evas_Object_Protected_Data *obj,
-                                         void *type_private_data);
 static void _evas_object_text_recalc(Evas_Object *eo_obj, Eina_Unicode *text);
 
 static const Evas_Object_Func object_func =
@@ -139,7 +136,6 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      NULL,
-     evas_object_text_scale_update,
      NULL,
      NULL,
      NULL,
@@ -2217,15 +2213,16 @@ evas_object_text_was_opaque(Evas_Object *eo_obj 
EINA_UNUSED,
    return 0;
 }
 
-static void
-evas_object_text_scale_update(Evas_Object *eo_obj,
-                              Evas_Object_Protected_Data *pd EINA_UNUSED,
-                              void *type_private_data)
+EOLIAN static void
+_evas_text_efl_ui_base_scale_set(Evas_Object *eo_obj, Evas_Text_Data *o,
+                                 double scale)
 {
-   Evas_Text_Data *o = type_private_data;
    int size;
    const char *font;
 
+   if (EINA_DBL_EQ(efl_ui_scale_get(eo_obj), scale)) return;
+   efl_ui_scale_set(efl_super(eo_obj, MY_CLASS), scale);
+
    font = eina_stringshare_add(o->cur.font);
    size = o->cur.size;
    if (o->cur.font) eina_stringshare_del(o->cur.font);
diff --git a/src/lib/evas/canvas/evas_object_textblock.c 
b/src/lib/evas/canvas/evas_object_textblock.c
index 041701334c..37cbd34f55 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -708,9 +708,6 @@ static int evas_object_textblock_was_opaque(Evas_Object 
*eo_obj,
 static void evas_object_textblock_coords_recalc(Evas_Object *eo_obj,
                                                Evas_Object_Protected_Data *obj,
                                                void *type_private_data);
-static void evas_object_textblock_scale_update(Evas_Object *eo_obj,
-                                              Evas_Object_Protected_Data *obj,
-                                              void *type_private_data);
 
 static const Evas_Object_Func object_func =
 {
@@ -732,7 +729,6 @@ static const Evas_Object_Func object_func =
      NULL,
      NULL,
      NULL, /*evas_object_textblock_coords_recalc, <- disable - not useful. */
-     evas_object_textblock_scale_update,
      NULL,
      NULL,
      NULL,
@@ -14603,12 +14599,14 @@ evas_object_textblock_was_opaque(Evas_Object *eo_obj 
EINA_UNUSED,
    return 0;
 }
 
-static void
-evas_object_textblock_scale_update(Evas_Object *eo_obj EINA_UNUSED,
-                                   Evas_Object_Protected_Data *obj EINA_UNUSED,
-                                   void *type_private_data)
+EOLIAN static void
+_efl_canvas_text_efl_ui_base_scale_set(Evas_Object *eo_obj,
+                                       Efl_Canvas_Text_Data *o,
+                                       double scale)
 {
-   Efl_Canvas_Text_Data *o = type_private_data;
+   if (EINA_DBL_EQ(efl_ui_scale_get(eo_obj), scale)) return;
+   efl_ui_scale_set(efl_super(eo_obj, MY_CLASS), scale);
+
    _evas_textblock_invalidate_all(o);
    _evas_textblock_changed(o, eo_obj);
    o->last_w = -1;
diff --git a/src/lib/evas/canvas/evas_object_textgrid.c 
b/src/lib/evas/canvas/evas_object_textgrid.c
index e0404a67af..df880c3e5f 100644
--- a/src/lib/evas/canvas/evas_object_textgrid.c
+++ b/src/lib/evas/canvas/evas_object_textgrid.c
@@ -113,10 +113,6 @@ static int evas_object_textgrid_was_opaque(Evas_Object 
*eo_obj,
                                           Evas_Object_Protected_Data *obj,
                                           void *type_private_data);
 
-static void evas_object_textgrid_scale_update(Evas_Object *eo_obj,
-                                             Evas_Object_Protected_Data *pd,
-                                             void *type_private_data);
-
 static const Evas_Object_Func object_func =
 {
    /* methods (compulsory) */
@@ -137,7 +133,6 @@ static const Evas_Object_Func object_func =
    NULL,
    NULL,
    NULL,
-   evas_object_textgrid_scale_update,
    NULL,
    NULL,
    NULL,
@@ -876,15 +871,16 @@ evas_object_textgrid_was_opaque(Evas_Object *eo_obj 
EINA_UNUSED,
    return 0;
 }
 
-static void
-evas_object_textgrid_scale_update(Evas_Object *eo_obj,
-                                 Evas_Object_Protected_Data *pd EINA_UNUSED,
-                                 void *type_private_data)
+EOLIAN static void
+_evas_textgrid_efl_ui_base_scale_set(Evas_Object *eo_obj, Evas_Textgrid_Data 
*o,
+                                     double scale)
 {
    int font_size;
    const char *font_name;
 
-   Evas_Textgrid_Data *o = type_private_data;
+   if (EINA_DBL_EQ(efl_ui_scale_get(eo_obj), scale)) return;
+   efl_ui_scale_set(efl_super(eo_obj, MY_CLASS), scale);
+
    font_name = eina_stringshare_add(o->cur.font_name);
    font_size = o->cur.font_size;
    if (o->cur.font_name) eina_stringshare_del(o->cur.font_name);
diff --git a/src/lib/evas/canvas/evas_text.eo b/src/lib/evas/canvas/evas_text.eo
index 68623a672e..b36218d969 100644
--- a/src/lib/evas/canvas/evas_text.eo
+++ b/src/lib/evas/canvas/evas_text.eo
@@ -1,6 +1,7 @@
 type @extern Evas.Text_Style_Type : __undefined_type; [[External text style 
type]]
 
-class Evas.Text (Efl.Canvas.Object, Efl.Text, Efl.Text.Properties, 
Efl.Text.Font, Efl.Canvas.Filter.Internal)
+class Evas.Text (Efl.Canvas.Object, Efl.Text, Efl.Text.Properties,
+                 Efl.Text.Font, Efl.Canvas.Filter.Internal, Efl.Ui.Base)
 {
    [[Evas text class]]
    legacy_prefix: evas_object_text;
@@ -281,5 +282,6 @@ class Evas.Text (Efl.Canvas.Object, Efl.Text, 
Efl.Text.Properties, Efl.Text.Font
       Efl.Canvas.Filter.Internal.filter_input_render;
       Efl.Canvas.Filter.Internal.filter_state_prepare;
       Efl.Canvas.Object.paragraph_direction { set; get; }
+      Efl.Ui.Base.scale { set; }
    }
 }
diff --git a/src/lib/evas/canvas/evas_textgrid.eo 
b/src/lib/evas/canvas/evas_textgrid.eo
index 1bf9afa330..dcc2a8274b 100644
--- a/src/lib/evas/canvas/evas_textgrid.eo
+++ b/src/lib/evas/canvas/evas_textgrid.eo
@@ -20,7 +20,8 @@ enum Evas.Textgrid.Font_Style {
 /* XXX: Actual definition is in C. */
 struct Evas.Textgrid.Cell; [[Evas textgrid cell data structure]]
 
-class Evas.Textgrid (Efl.Canvas.Object, Efl.Text.Properties, Efl.Text.Font)
+class Evas.Textgrid (Efl.Canvas.Object, Efl.Text.Properties, Efl.Text.Font,
+                     Efl.Ui.Base)
 {
    [[Evas textgrid class]]
    legacy_prefix: evas_object_textgrid;
@@ -201,5 +202,6 @@ class Evas.Textgrid (Efl.Canvas.Object, 
Efl.Text.Properties, Efl.Text.Font)
       Efl.Text.Properties.font { get; set; }
       Efl.Text.Properties.font_source { get; set; }
       Efl.Text.Font.font_bitmap_scalable { get; set; }
+      Efl.Ui.Base.scale { set; }
    }
 }
diff --git a/src/lib/evas/include/evas_private.h 
b/src/lib/evas/include/evas_private.h
index 43d378511b..6753931f34 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1265,8 +1265,6 @@ struct _Evas_Object_Func
 
    void (*coords_recalc) (Evas_Object *obj, Evas_Object_Protected_Data *pd, 
void *type_private_data);
 
-   void (*scale_update) (Evas_Object *obj, Evas_Object_Protected_Data *pd, 
void *type_private_data);
-
    int (*has_opaque_rect) (Evas_Object *obj, Evas_Object_Protected_Data *pd, 
void *type_private_data);
    int (*get_opaque_rect) (Evas_Object *obj, Evas_Object_Protected_Data *pd, 
void *type_private_data,
                            Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, 
Evas_Coord *h);

-- 


Reply via email to