bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8e2f5e8642c1c559af3b53c9768eb7dbe621b8f5

commit 8e2f5e8642c1c559af3b53c9768eb7dbe621b8f5
Author: Marcel Hollerbach <marcel-hollerb...@t-online.de>
Date:   Tue Jul 18 16:13:57 2017 +0200

    elm_widget: disable is a property across the tree
    
    if a widget is disabled its children are also meant to be disabled.
    
    ref T5753
---
 src/lib/elementary/elm_widget.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 9a3da4e83d..8b85872ae1 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -214,6 +214,19 @@ _tree_unfocusable(Eo *obj)
    return EINA_FALSE;
 }
 
+static Eina_Bool
+_tree_disabled(Eo *obj)
+{
+   Elm_Widget *wid = obj;
+
+   do {
+     ELM_WIDGET_DATA_GET(wid, wid_pd);
+
+     if (wid_pd->disabled) return EINA_TRUE;
+   } while((wid = elm_widget_parent_widget_get(wid)));
+
+   return EINA_FALSE;
+}
 
 static void _full_eval(Eo *obj, Elm_Widget_Smart_Data *pd);
 
@@ -287,12 +300,13 @@ _focus_state_eval(Eo *obj, Elm_Widget_Smart_Data *pd)
      {
         should = EINA_TRUE;
         //can focus can be overridden by the following properties
-        if (pd->disabled)
-          should = EINA_FALSE;
 
         if (_tree_unfocusable(obj))
           should = EINA_FALSE;
 
+        if (_tree_disabled(obj))
+          should = EINA_FALSE;
+
         if (!evas_object_visible_get(obj))
           should = EINA_FALSE;
 

-- 


Reply via email to