discomfitor pushed a commit to branch master.

commit b9cca5a97a5dbce1699593f16b04f5f1f01d5abb
Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Jun 17 09:52:14 2013 +0100

    fix e widget focus un-setting
---
 src/bin/e_widget.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_widget.c b/src/bin/e_widget.c
index e67530a..565207c 100644
--- a/src/bin/e_widget.c
+++ b/src/bin/e_widget.c
@@ -254,7 +254,7 @@ e_widget_focus_jump(Evas_Object *obj, int forward)
         Evas_Object *sobj = NULL;
         int focus_next = 0;
 
-        if (!sd->focused)
+        if ((!sd->disabled) && (!sd->focused))
           {
              e_widget_focus_set(obj, forward);
              sd->focused = 1;
@@ -268,7 +268,7 @@ e_widget_focus_jump(Evas_Object *obj, int forward)
                   EINA_LIST_FOREACH(sd->subobjs, l, sobj)
                     {
                        if (!e_widget_can_focus_get(sobj)) continue;
-                       if ((focus_next) && (!e_widget_disabled_get(sobj)))
+                       if (focus_next)
                          {
                             /* the previous focused item was unfocused - so 
focus
                              * the next one (that can be focused) */
@@ -460,7 +460,11 @@ e_widget_disabled_set(Evas_Object *obj, int disabled)
              if (!o) break;
              parent = o;
           }
-        e_widget_focus_jump(parent, 1);
+        if (!e_widget_focus_jump(parent, 1))
+          {
+             sd->focused = 0;
+             if (sd->focus_func) sd->focus_func(obj);
+          }
      }
    if (sd->disable_func) sd->disable_func(obj);
    if (sd->on_disable_func) sd->on_disable_func(sd->on_disable_data, obj);

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to