static void
_mirror_disabled_state(Eo *obj, Elm_Widget_Smart_Data *pd, int disabled_delta)
{
+ int prev_disabled = pd->disabled;
+
pd->disabled = (pd->parent_obj ? _disabled_counter_get(pd->parent_obj) : 0) + disabled_delta;
+ //The current disabled state is the same as the parent
+ //when the parent is assigned or changed, no further action is required.
+ if (((prev_disabled > 0 && pd->disabled > 0)) ||
+ ((prev_disabled <= 0 && pd->disabled <= 0)))
+ return;
+
//we should not call disabled_set when things are invalidated
//otherwise we will unleashe an amount of errors in efl_ui_layout
if (efl_invalidated_get(obj)) return;