zmike pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7da106ec681195a5538cfcf0da2cf4805173c23e
commit 7da106ec681195a5538cfcf0da2cf4805173c23e Author: Wonki Kim <[email protected]> Date: Wed Feb 19 12:40:39 2020 -0500 edje: modify to respect user set fixed property Summary: this patch is related with @D11365. rather than undoing optimization edje calc, this patch introduces a user_set property which enables edje_calc to respect user set property. Reviewers: bu5hm4n, eagleeye, YOhoho, Hermet, zmike Reviewed By: zmike Subscribers: zmike, cedric, #reviewers, #committers, woohyun, eagleeye, bu5hm4n Tags: #efl Differential Revision: https://phab.enlightenment.org/D11366 --- src/bin/edje/edje_cc_handlers.c | 2 ++ src/lib/edje/edje_calc.c | 4 ++-- src/lib/edje/edje_data.c | 2 ++ src/lib/edje/edje_private.h | 4 ++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index b110292cb0..eb5cbd9e8b 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -9312,6 +9312,8 @@ st_collections_group_parts_part_description_fixed(void) current_desc->fixed.w = parse_bool(0); current_desc->fixed.h = parse_bool(1); + + current_desc->user_set.fixed = EINA_TRUE; } /** diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c index 30f556d722..7de6c66db6 100644 --- a/src/lib/edje/edje_calc.c +++ b/src/lib/edje/edje_calc.c @@ -2993,14 +2993,14 @@ _edje_part_recalc_single(Edje *ed, /* check whether this part has fixed value or not*/ if ((rel1_to_x == rel2_to_x) && (EQ(desc->rel1.relative_x, desc->rel2.relative_x)) && - (!chosen_desc->fixed.w)) + (!chosen_desc->fixed.w) && (!chosen_desc->user_set.fixed)) { chosen_desc->fixed.w = 1; fixedw = EINA_TRUE; } if ((rel1_to_y == rel2_to_y) && (EQ(desc->rel1.relative_y, desc->rel2.relative_y)) && - (!chosen_desc->fixed.h)) + (!chosen_desc->fixed.h) && (!chosen_desc->user_set.fixed)) { chosen_desc->fixed.h = 1; fixedh = EINA_TRUE; diff --git a/src/lib/edje/edje_data.c b/src/lib/edje/edje_data.c index 41f73ab410..dfb84e5811 100644 --- a/src/lib/edje/edje_data.c +++ b/src/lib/edje/edje_data.c @@ -760,6 +760,7 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(Edd, Type, "align_3d", align_3d, _edje_edd_edje_part_description_3d_vec); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.w", fixed.w, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.h", fixed.h, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "user_set.fixed", user_set.fixed, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.have", minmul.have, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.w", minmul.w, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.h", minmul.h, EDJE_T_FLOAT); \ @@ -859,6 +860,7 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(Edd, Type, "align_3d", Dec.align_3d, _edje_edd_edje_part_description_3d_vec); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.w", Dec.fixed.w, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.h", Dec.fixed.h, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "user_set.fixed", Dec.user_set.fixed, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.w", Dec.min.w, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.h", Dec.min.h, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.w", Dec.max.w, EET_T_INT); \ diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index a35c7eca90..e38d6d57c5 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -1380,6 +1380,10 @@ struct _Edje_Part_Description_Common unsigned char limit; /* 0 == no, 1 = width, 2 = height, 3 = both */ unsigned char no_render; /* no_render override @since 1.19 */ unsigned char offset_is_scaled; + + struct { + Eina_Bool fixed; + } user_set; }; struct _Edje_Part_Description_Spec_Fill --
