From 41189a00513fee921b0c2ecd61b74380f29ab90f Mon Sep 17 00:00:00 2001 From: Woochanlee Date: Fri, 12 Apr 2019 15:45:37 +0900 Subject: [PATCH] efl_ui_widget: Fix disabled set calling without meaning. Summary: The efl_ui_widget_disabled_set calling even the state is not change when widget create and destroy. It broken backward compatibility. T7799 @fix Reviewers: bu5hm4n, Jaehyun_Cho Reviewed By: Jaehyun_Cho Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8600 --- src/lib/elementary/efl_ui_widget.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/elementary/efl_ui_widget.c b/src/lib/elementary/efl_ui_widget.c index 15585ca731..c56990f8b3 100644 --- a/src/lib/elementary/efl_ui_widget.c +++ b/src/lib/elementary/efl_ui_widget.c @@ -1373,8 +1373,16 @@ _disabled_counter_get(Eo *widget) 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;