diff --git a/legacy/edje/src/bin/edje_cc_handlers.c b/legacy/edje/src/bin/edje_cc_handlers.c index 30dab28a4d..86def01667 100644 --- a/legacy/edje/src/bin/edje_cc_handlers.c +++ b/legacy/edje/src/bin/edje_cc_handlers.c @@ -172,6 +172,7 @@ static void st_collections_group_parts_part_description_visible(void); static void st_collections_group_parts_part_description_align(void); static void st_collections_group_parts_part_description_fixed(void); static void st_collections_group_parts_part_description_min(void); +static void st_collections_group_parts_part_description_minmul(void); static void st_collections_group_parts_part_description_max(void); static void st_collections_group_parts_part_description_step(void); static void st_collections_group_parts_part_description_aspect(void); @@ -434,6 +435,7 @@ New_Statement_Handler statement_handlers[] = {"collections.group.parts.part.description.align", st_collections_group_parts_part_description_align}, {"collections.group.parts.part.description.fixed", st_collections_group_parts_part_description_fixed}, {"collections.group.parts.part.description.min", st_collections_group_parts_part_description_min}, + {"collections.group.parts.part.description.minmul", st_collections_group_parts_part_description_minmul}, {"collections.group.parts.part.description.max", st_collections_group_parts_part_description_max}, {"collections.group.parts.part.description.step", st_collections_group_parts_part_description_step}, {"collections.group.parts.part.description.aspect", st_collections_group_parts_part_description_aspect}, @@ -4132,6 +4134,9 @@ ob_collections_group_parts_part_description(void) ed->map.persp_on = 0; ed->persp.zplane = 0; ed->persp.focal = 1000; + ed->minmul.have = 1; + ed->minmul.w = FROM_INT(1); + ed->minmul.h = FROM_INT(1); } /** @@ -4547,6 +4552,26 @@ st_collections_group_parts_part_description_min(void) current_desc->min.h = parse_float_range(1, 0, 0x7fffffff); } +/** + @page edcref + @property + minmul + @parameters + [width multipler] [height multiplier] + @effect + A multiplier FORCIBLY applied to whatever minimum size is only during + minimum size calculation. + @endproperty +*/ +static void +st_collections_group_parts_part_description_minmul(void) +{ + check_arg_count(2); + + current_desc->minmul.w = FROM_DOUBLE(parse_float_range(0, 0, 999999)); + current_desc->minmul.h = FROM_DOUBLE(parse_float_range(1, 0, 999999)); +} + /** @page edcref @property diff --git a/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c index 8e7e7cec7f..213e266dbf 100644 --- a/legacy/edje/src/lib/edje_calc.c +++ b/legacy/edje/src/lib/edje_calc.c @@ -116,6 +116,7 @@ _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos, FLOAT_T ep->description_pos = npos; ed->dirty = 1; + ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE ep->invalidate = 1; #endif @@ -572,6 +573,7 @@ _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, doubl _edje_external_recalc_apply(ed, ep, NULL, chosen_desc); ed->dirty = 1; + ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE ep->invalidate = 1; #endif @@ -641,9 +643,13 @@ _edje_recalc_do(Edje *ed) ed->text_part_change = 0; #endif if (!ed->calc_only) - evas_object_smart_callback_call(ed->obj, "recalc", NULL); + { + if (ed->recalc_call) + evas_object_smart_callback_call(ed->obj, "recalc", NULL); + } else evas_object_smart_need_recalculate_set(ed->obj, need_calc); + ed->recalc_call = 0; } void @@ -711,6 +717,7 @@ _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T x, FLOAT_T y) ep->drag->tmp.x = 0; ep->drag->need_reset = 0; ed->dirty = 1; + ed->recalc_call = 1; } if (ep->drag->y != y || ep->drag->tmp.y) @@ -719,6 +726,7 @@ _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T x, FLOAT_T y) ep->drag->tmp.y = 0; ep->drag->need_reset = 0; ed->dirty = 1; + ed->recalc_call = 1; } #ifdef EDJE_CALC_CACHE @@ -1681,6 +1689,15 @@ _edje_part_recalc_single_min_max(FLOAT_T sc, if (ep->swallow_params.min.w > desc->min.w) *minw = ep->swallow_params.min.w; + if (ep->edje->calc_only) + { + if (desc->minmul.have) + { + FLOAT_T mmw = desc->minmul.w; + if (mmw != FROM_INT(1)) *minw = TO_INT(SCALE(mmw, *minw)); + } + } + /* XXX TODO: remove need of EDJE_INF_MAX_W, see edje_util.c */ if ((ep->swallow_params.max.w <= 0) || (ep->swallow_params.max.w == EDJE_INF_MAX_W)) @@ -1708,6 +1725,8 @@ _edje_part_recalc_single_min_max(FLOAT_T sc, *maxw = ep->swallow_params.max.w; } } + if ((ep->edje->calc_only) && (desc->minmul.have) && + (desc->minmul.w != FROM_INT(1))) *maxw = *minw; if (*maxw >= 0) { if (*maxw < *minw) *maxw = *minw; @@ -1718,6 +1737,16 @@ _edje_part_recalc_single_min_max(FLOAT_T sc, if (ep->swallow_params.min.h > desc->min.h) *minh = ep->swallow_params.min.h; + if (ep->edje->calc_only) + { + if (desc->minmul.have) + { + FLOAT_T mmh = desc->minmul.h; + if (mmh != FROM_INT(1)) *minh = TO_INT(SCALE(mmh, *minh)); + } + } + + /* XXX TODO: remove need of EDJE_INF_MAX_H, see edje_util.c */ if ((ep->swallow_params.max.h <= 0) || (ep->swallow_params.max.h == EDJE_INF_MAX_H)) @@ -1744,7 +1773,9 @@ _edje_part_recalc_single_min_max(FLOAT_T sc, if (ep->swallow_params.max.h < *maxh) *maxh = ep->swallow_params.max.h; } - } + } + if ((ep->edje->calc_only) && (desc->minmul.have) && + (desc->minmul.h != FROM_INT(1))) *maxh = *minh; if (*maxh >= 0) { if (*maxh < *minh) *maxh = *minh; @@ -1876,7 +1907,7 @@ _edje_part_recalc_single(Edje *ed, sc = ed->scale; if (sc == ZERO) sc = _edje_scale; _edje_part_recalc_single_min_max(sc, ep, desc, &minw, &minh, &maxw, &maxh); - + /* relative coords of top left & bottom right */ _edje_part_recalc_single_rel(ed, ep, desc, rel1_to_x, rel1_to_y, rel2_to_x, rel2_to_y, params); @@ -2062,7 +2093,7 @@ _edje_proxy_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj Edje_Real_Part *pp; int part_id = -1; - if (pos >= 0.5) + if (pos >= FROM_DOUBLE(0.5)) part_id = ((Edje_Part_Description_Proxy*) ep->param2->description)->proxy.id; else part_id = chosen_desc->proxy.id; @@ -2334,7 +2365,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta Edje_Real_Part *pp; int part_id = -1; - if (pos >= 0.5) + if (pos >= FROM_DOUBLE(0.5)) part_id = ((Edje_Part_Description_Proxy*) ep->param2->description)->proxy.id; else part_id = ((Edje_Part_Description_Proxy*) chosen_desc)->proxy.id; @@ -2437,8 +2468,13 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta ((ep->part->type == EDJE_PART_TYPE_TEXT || ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) && ed->text_part_change)) #endif { - _edje_part_recalc_single(ed, ep, ep->param2->description, chosen_desc, center[1], light[1], persp[1], - ep->param2->rel1_to_x, ep->param2->rel1_to_y, ep->param2->rel2_to_x, ep->param2->rel2_to_y, + _edje_part_recalc_single(ed, ep, ep->param2->description, + chosen_desc, + center[1], light[1], persp[1], + ep->param2->rel1_to_x, + ep->param2->rel1_to_y, + ep->param2->rel2_to_x, + ep->param2->rel2_to_y, confine_to, p2, pos); #ifdef EDJE_CALC_CACHE @@ -2486,7 +2522,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta p3->req.y = INTP(p1->req.y, p2->req.y, pos); p3->req.w = INTP(p1->req.w, p2->req.w, pos); p3->req.h = INTP(p1->req.h, p2->req.h, pos); - + if (ep->part->dragable.x) { p3->req_drag.x = INTP(p1->req_drag.x, p2->req_drag.x, pos); diff --git a/legacy/edje/src/lib/edje_callbacks.c b/legacy/edje/src/lib/edje_callbacks.c index e0b0eae091..2b02891e12 100644 --- a/legacy/edje/src/lib/edje_callbacks.c +++ b/legacy/edje/src/lib/edje_callbacks.c @@ -134,6 +134,7 @@ _edje_mouse_down_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, voi _edje_emit(ed, buf, events->part->name); } ed->dirty = 1; + ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -157,6 +158,7 @@ _edje_mouse_down_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, voi rp->drag->val.y = dy; if (!ignored) _edje_emit(ed, "drag", rp->part->name); + ed->recalc_call = 1; ed->dirty = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; @@ -235,6 +237,7 @@ _edje_mouse_up_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void if (rp->drag->down.count == 0) { rp->drag->need_reset = 1; + ed->recalc_call = 1; ed->dirty = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; @@ -314,6 +317,7 @@ _edje_mouse_move_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, voi rp->drag->tmp.x = ev->cur.canvas.x - rp->drag->down.x; if (rp->part->dragable.y) rp->drag->tmp.y = ev->cur.canvas.y - rp->drag->down.y; + ed->recalc_call = 1; ed->dirty = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; @@ -332,6 +336,7 @@ _edje_mouse_move_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, voi rp->drag->val.y = dy; if (!ignored) _edje_emit(ed, "drag", rp->part->name); + ed->recalc_call = 1; ed->dirty = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; diff --git a/legacy/edje/src/lib/edje_data.c b/legacy/edje/src/lib/edje_data.c index 6b7b3955cb..32b17b6777 100644 --- a/legacy/edje/src/lib/edje_data.c +++ b/legacy/edje/src/lib/edje_data.c @@ -451,6 +451,9 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.y", align.y, EDJE_T_FLOAT); \ 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, "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); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.w", min.w, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.h", min.h, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.w", max.w, EET_T_INT); \ diff --git a/legacy/edje/src/lib/edje_embryo.c b/legacy/edje/src/lib/edje_embryo.c index c89a4f4a78..1ad23777c0 100644 --- a/legacy/edje/src/lib/edje_embryo.c +++ b/legacy/edje/src/lib/edje_embryo.c @@ -674,6 +674,7 @@ _edje_embryo_fn_set_min_size(Embryo_Program *ep, Embryo_Cell *params) if (h < 0.0) h = 0.0; ed->collection->prop.min.w = w; ed->collection->prop.min.h = h; + ed->recalc_call = 1; ed->dirty = 1; #ifdef EDJE_CALC_CACHE ed->all_part_change = 1; @@ -701,6 +702,7 @@ _edje_embryo_fn_set_max_size(Embryo_Program *ep, Embryo_Cell *params) if (h < 0.0) h = 0.0; ed->collection->prop.max.w = w; ed->collection->prop.max.h = h; + ed->recalc_call = 1; ed->dirty = 1; #ifdef EDJE_CALC_CACHE ed->all_part_change = 1; diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c index de247a6d0b..8fe58424cf 100644 --- a/legacy/edje/src/lib/edje_load.c +++ b/legacy/edje/src/lib/edje_load.c @@ -525,7 +525,7 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g } rp->swallow_params.min.w = 0; - rp->swallow_params.min.w = 0; + rp->swallow_params.min.h = 0; rp->swallow_params.max.w = -1; rp->swallow_params.max.h = -1; @@ -603,6 +603,7 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->drag->val.y); } } + ed->recalc_call = 1; ed->dirty = 1; #ifdef EDJE_CALC_CACHE ed->all_part_change = 1; diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index e170c5811e..5d657d0464 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -835,6 +835,11 @@ struct _Edje_Part_Description_Common unsigned char w, h; /* width or height is fixed in side (cannot expand with Edje object size) */ } fixed; + struct { // only during recalc + unsigned char have; + FLOAT_T w, h; + } minmul; + Edje_Size min, max; Edje_Position step; /* size stepping by n pixels, 0 = none */ Edje_Aspect_Prefer aspect; @@ -1139,6 +1144,7 @@ struct _Edje unsigned int all_part_change : 1; #endif unsigned int have_mapped_part : 1; + unsigned int recalc_call : 1; }; struct _Edje_Calc_Params diff --git a/legacy/edje/src/lib/edje_program.c b/legacy/edje/src/lib/edje_program.c index 1e8f03cff4..d80c7c91f9 100644 --- a/legacy/edje/src/lib/edje_program.c +++ b/legacy/edje/src/lib/edje_program.c @@ -1621,6 +1621,7 @@ _edje_param_native_set(Edje_Real_Part *rp, const char *name, const Edje_External if (param->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) return EINA_FALSE; rp->drag->size.x = FROM_DOUBLE(CLAMP(param->d, 0.0, 1.0)); + rp->edje->recalc_call = 1; rp->edje->dirty = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; @@ -1633,6 +1634,7 @@ _edje_param_native_set(Edje_Real_Part *rp, const char *name, const Edje_External if (param->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) return EINA_FALSE; rp->drag->size.y = FROM_DOUBLE(CLAMP(param->d, 0.0, 1.0)); + rp->edje->recalc_call = 1; rp->edje->dirty = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index 0e2aa8f461..2205ba3a5d 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -438,6 +438,7 @@ edje_color_class_set(const char *color_class, int r, int g, int b, int a, int r2 ed = eina_list_data_get(members); ed->dirty = 1; + ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE ed->all_part_change = 1; #endif @@ -504,6 +505,7 @@ edje_color_class_del(const char *color_class) ed = eina_list_data_get(members); ed->dirty = 1; + ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE ed->all_part_change = 1; #endif @@ -583,6 +585,7 @@ edje_object_color_class_set(Evas_Object *obj, const char *color_class, int r, in cc->b3 = b3; cc->a3 = a3; ed->dirty = 1; + ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE ed->all_part_change = 1; #endif @@ -611,6 +614,7 @@ edje_object_color_class_set(Evas_Object *obj, const char *color_class, int r, in cc->a3 = a3; ed->color_classes = eina_list_append(ed->color_classes, cc); ed->dirty = 1; + ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE ed->all_part_change = 1; #endif @@ -693,6 +697,7 @@ edje_object_color_class_del(Evas_Object *obj, const char *color_class) } ed->dirty = 1; + ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE ed->all_part_change = 1; #endif @@ -752,6 +757,7 @@ edje_text_class_set(const char *text_class, const char *font, Evas_Font_Size siz ed = eina_list_data_get(members); ed->dirty = 1; + ed->recalc_call = 1; _edje_textblock_style_all_update(ed); #ifdef EDJE_CALC_CACHE ed->text_part_change = 1; @@ -847,6 +853,7 @@ edje_object_text_class_set(Evas_Object *obj, const char *text_class, const char /* Update edje */ ed->dirty = 1; + ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE ed->text_part_change = 1; #endif @@ -881,6 +888,7 @@ edje_object_text_class_set(Evas_Object *obj, const char *text_class, const char /* Add to edje's text class list */ ed->text_classes = eina_list_append(ed->text_classes, tc); ed->dirty = 1; + ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE ed->text_part_change = 1; #endif @@ -1005,6 +1013,7 @@ _edje_object_part_text_raw_set(Evas_Object *obj, Edje_Real_Part *rp, const char else if (text) rp->text.text = eina_stringshare_add(text); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -1039,6 +1048,7 @@ _edje_object_part_text_raw_append(Evas_Object *obj, Edje_Real_Part *rp, const ch } } rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -1307,6 +1317,7 @@ edje_object_part_text_insert(Evas_Object *obj, const char *part, const char *tex if (rp->part->entry_mode <= EDJE_ENTRY_EDIT_MODE_NONE) return; _edje_entry_text_markup_insert(rp, text); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -1328,6 +1339,7 @@ edje_object_part_text_append(Evas_Object *obj, const char *part, const char *tex if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return; _edje_object_part_text_raw_append(obj, rp, part, text); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -1936,6 +1948,7 @@ _recalc_extern_parent(Evas_Object *obj) ed = _edje_fetch(parent); ed->dirty = 1; + ed->recalc_call = 1; // ZZZ: ??? _edje_recalc(ed); } @@ -2227,6 +2240,7 @@ edje_object_part_unswallow(Evas_Object *obj __UNUSED__, Evas_Object *obj_swallow rp->swallow_params.max.w = 0; rp->swallow_params.max.h = 0; rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -2687,6 +2701,7 @@ edje_object_part_drag_size_set(Evas_Object *obj, const char *part, double dw, do rp->drag->size.x = FROM_DOUBLE(dw); rp->drag->size.y = FROM_DOUBLE(dh); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -3021,6 +3036,7 @@ _edje_box_child_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *child __UNUS Edje_Real_Part *rp = data; rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -3034,6 +3050,7 @@ _edje_box_child_add(Edje_Real_Part *rp, Evas_Object *child) (child, EVAS_CALLBACK_DEL, _edje_box_child_del_cb, rp); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -3047,6 +3064,7 @@ _edje_box_child_remove(Edje_Real_Part *rp, Evas_Object *child) (child, EVAS_CALLBACK_DEL, _edje_box_child_del_cb, rp); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -3189,6 +3207,7 @@ _edje_table_child_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *child __UN Edje_Real_Part *rp = data; rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -3202,6 +3221,7 @@ _edje_table_child_add(Edje_Real_Part *rp, Evas_Object *child) (child, EVAS_CALLBACK_DEL, _edje_table_child_del_cb, rp); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -3215,6 +3235,7 @@ _edje_table_child_remove(Edje_Real_Part *rp, Evas_Object *child) (child, EVAS_CALLBACK_DEL, _edje_table_child_del_cb, rp); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; #ifdef EDJE_CALC_CACHE rp->invalidate = 1; #endif @@ -3317,6 +3338,7 @@ _edje_perspective_obj_del(void *data, __UNUSED__ Evas *e, __UNUSED__ Evas_Object if (!ed) continue; ed->persp = NULL; ed->dirty = 1; + ed->recalc_call = 1; _edje_recalc_do(ed); } free(ps); @@ -3370,6 +3392,7 @@ edje_perspective_set(Edje_Perspective *ps, Evas_Coord px, Evas_Coord py, Evas_Co if (!ed->persp) { ed->dirty = 1; + ed->recalc_call = 1; _edje_recalc_do(ed); } } @@ -3384,6 +3407,7 @@ edje_perspective_set(Edje_Perspective *ps, Evas_Coord px, Evas_Coord py, Evas_Co if (!ed->persp) { ed->dirty = 1; + ed->recalc_call = 1; _edje_recalc_do(ed); } } @@ -3417,6 +3441,7 @@ edje_perspective_global_set(Edje_Perspective *ps, Eina_Bool global) if (!ed->persp) { ed->dirty = 1; + ed->recalc_call = 1; _edje_recalc_do(ed); } } @@ -3456,6 +3481,7 @@ edje_object_perspective_set(Evas_Object *obj, Edje_Perspective *ps) ed->persp = ps; if (ps) ps->users = eina_list_append(ps->users, obj); ed->dirty = 1; + ed->recalc_call = 1; _edje_recalc_do(ed); } @@ -4078,6 +4104,7 @@ _edje_object_part_swallow_changed_hints_cb(void *data, __UNUSED__ Evas *e, __UNU rp = data; _edje_real_part_swallow_hints_update(rp); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; _edje_recalc(rp->edje); return; } @@ -4099,6 +4126,7 @@ _edje_real_part_swallow(Edje_Real_Part *rp, if (hints_update) _edje_real_part_swallow_hints_update(rp); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; _edje_recalc(rp->edje); return; } @@ -4142,6 +4170,7 @@ _edje_real_part_swallow(Edje_Real_Part *rp, evas_object_precise_is_inside_set(obj_swallow, 1); rp->edje->dirty = 1; + rp->edje->recalc_call = 1; _edje_recalc(rp->edje); }