diff --git a/legacy/edje/src/lib/edje_edit.c b/legacy/edje/src/lib/edje_edit.c index 16fe7a8e7c..9fc559983b 100644 --- a/legacy/edje/src/lib/edje_edit.c +++ b/legacy/edje/src/lib/edje_edit.c @@ -2057,8 +2057,8 @@ edje_edit_part_selected_state_set(Evas_Object *obj, const char *part, const char pd = _edje_part_description_find_byname(ed, part, state, value); if (!pd) return 0; - //printf("EDJE: Set state: %s\n", pd->state.name); - _edje_part_description_apply(ed, rp, pd->state.name, pd->state.value, NULL, 0); //WHAT IS NULL , 0 + //printf("EDJE: Set state: %s %f\n", pd->state.name, pd->state.value); + _edje_part_description_apply(ed, rp, pd->state.name, pd->state.value, NULL, 0.0); edje_object_calc_force(obj); return 1; @@ -3779,10 +3779,20 @@ edje_edit_state_external_param_set(Evas_Object *obj, const char *part, const cha if (!found) pd->external_params = eina_list_append(pd->external_params, p); - _edje_external_parsed_params_free(rp->swallowed_object, rp->param1.external_params); - rp->param1.external_params = _edje_external_params_parse(rp->swallowed_object, pd->external_params); + _edje_external_parsed_params_free(rp->swallowed_object, + rp->param1.external_params); + rp->param1.external_params = \ + _edje_external_params_parse(rp->swallowed_object, + pd->external_params); - edje_object_calc_force(obj); + { + const char * sname; + double svalue; + sname = edje_edit_part_selected_state_get(obj, part, &svalue); + if (!strcmp(state, sname) && svalue == value) + edje_object_part_external_param_set(obj, part, p); + eina_stringshare_del(sname); + } return EINA_TRUE; } diff --git a/legacy/edje/src/lib/edje_external.c b/legacy/edje/src/lib/edje_external.c index 327f3a4d05..69a242f62f 100644 --- a/legacy/edje/src/lib/edje_external.c +++ b/legacy/edje/src/lib/edje_external.c @@ -632,9 +632,14 @@ _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep, if (!type->state_set) return; - params1 = ep->param1.external_params ? ep->param1.external_params : ep->param1.description->external_params; + params1 = ep->param1.external_params ? + ep->param1.external_params : + ep->param1.description->external_params; + if (ep->param2 && ep->param2->description) - params2 = ep->param2->external_params ? ep->param2->external_params : ep->param2->description->external_params; + params2 = ep->param2->external_params ? + ep->param2->external_params : + ep->param2->description->external_params; type->state_set(type->data, ep->swallowed_object, params1, params2, ep->description_pos);