summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2017-11-29 17:59:34 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-11-30 10:48:24 +0900
commit8803040484721c15e5a7f48f4373b38d41d9d42e (patch)
tree3dad6f6b9a0a0a33564231360bcc50e4160e5cef
parent73e3a82bc2046f26de3c76e38c525fd1218df088 (diff)
downloadefl-8803040484721c15e5a7f48f4373b38d41d9d42e.tar.gz
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.
-rw-r--r--src/bin/elementary/test_gfx_filters.c4
-rw-r--r--src/lib/edje/edje_text.c14
-rw-r--r--src/lib/edje/edje_textblock.c10
-rw-r--r--src/lib/evas/Evas_Legacy.h30
-rw-r--r--src/lib/evas/canvas/efl_canvas_object.eo24
-rw-r--r--src/lib/evas/canvas/efl_canvas_text.eo6
-rw-r--r--src/lib/evas/canvas/efl_canvas_vg.c1
-rw-r--r--src/lib/evas/canvas/evas_object_image.c1
-rw-r--r--src/lib/evas/canvas/evas_object_line.c1
-rw-r--r--src/lib/evas/canvas/evas_object_main.c20
-rw-r--r--src/lib/evas/canvas/evas_object_polygon.c1
-rw-r--r--src/lib/evas/canvas/evas_object_rectangle.c1
-rw-r--r--src/lib/evas/canvas/evas_object_smart.c1
-rw-r--r--src/lib/evas/canvas/evas_object_text.c15
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c16
-rw-r--r--src/lib/evas/canvas/evas_object_textgrid.c16
-rw-r--r--src/lib/evas/canvas/evas_text.eo4
-rw-r--r--src/lib/evas/canvas/evas_textgrid.eo4
-rw-r--r--src/lib/evas/include/evas_private.h2
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);