From 1a1b8bc45155dcb96129013c4177d742a06434e6 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Thu, 27 Jul 2017 20:46:17 +0900 Subject: [PATCH] evas: Set weight to "expand" by default This is a semi experimental patch to set the default weight of objects to (1, 1), i.e. EXPAND. This seems like a more sensible default value than no weight. Some objects may not need the expand weight, but this seems to be the minority, not the majority. Ref T5301 --- src/lib/evas/canvas/evas_object_main.c | 4 ++++ src/lib/evas/canvas/evas_render.c | 4 ++++ src/lib/evas/include/evas_private.h | 1 + 3 files changed, 9 insertions(+) diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index 23878f31df..f129cfb5bd 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -207,6 +207,9 @@ _efl_canvas_object_efl_object_finalize(Eo *eo_obj, Evas_Object_Protected_Data *o if (!EVAS_OBJECT_DATA_ALIVE(obj)) goto end; if (obj->legacy.ctor) goto end; + if (!obj->legacy.weight_set) + efl_gfx_size_hint_weight_set(eo_obj, 1.0, 1.0); + if (obj->legacy.visible_set /* && ... */) { obj->legacy.finalized = EINA_TRUE; @@ -1628,6 +1631,7 @@ _efl_canvas_object_efl_gfx_size_hint_hint_weight_get(Eo *eo_obj EINA_UNUSED, Eva EOLIAN static void _efl_canvas_object_efl_gfx_size_hint_hint_weight_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, double x, double y) { + obj->legacy.weight_set = 1; if (obj->delete_me) return; evas_object_async_block(obj); diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index c72a3f6bb7..4c2dca9536 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -2880,6 +2880,10 @@ evas_render_pre(Evas *eo_e, Evas_Public_Data *evas) if (!obj->legacy.visible_set) efl_gfx_visible_set(eo_obj, EINA_TRUE); + + // weight should be set during finalize() + if (EINA_UNLIKELY(!obj->legacy.weight_set)) + efl_gfx_size_hint_weight_set(eo_obj, 1.0, 1.0); } eina_evlog("-render_pre_objects_finalize", eo_e, 0.0, NULL); diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 7cb9b85106..eb504fc157 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1261,6 +1261,7 @@ struct _Evas_Object_Protected_Data struct { Eina_Bool ctor : 1; // used legacy constructor Eina_Bool visible_set : 1; // visibility manually set + Eina_Bool weight_set : 1; // weight manually set Eina_Bool finalized : 1; // object fully constructed } legacy;