Enlightenment CVS committal

Author  : jethomas
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_embed.c 


Log Message:
Fix bug 353.

===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_embed.c,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -3 -r1.134 -r1.135
--- ewl_embed.c 8 Dec 2007 22:07:41 -0000       1.134
+++ ewl_embed.c 7 Jan 2008 01:01:49 -0000       1.135
@@ -560,6 +560,7 @@
        while (temp && temp->parent && ewl_widget_internal_is(temp))
                temp = temp->parent;
 
+       /* Show widgets as focused */
        ewl_embed_focused_widget_set(embed, temp);
 
        /*
@@ -599,30 +600,6 @@
                temp = temp->parent;
        }
 
-       /*
-        * Determine whether this widget has already been selected, if not,
-        * deselect the previously selected widget and notify it of the
-        * change. Then select the new widget and notify it of the selection.
-        */
-       if (widget != deselect) {
-               /*
-                * Make sure these widgets haven't been scheduled for
-                * deletion before we send their callbacks.
-                */
-               if (deselect && !DESTROYED(deselect) &&
-                               !ewl_widget_parent_of(deselect, widget)) {
-                       ewl_object_state_remove(EWL_OBJECT(deselect),
-                                               EWL_FLAG_STATE_FOCUSED);
-                       ewl_callback_call(deselect, EWL_CALLBACK_FOCUS_OUT);
-               }
-
-               if (widget && !DISABLED(widget) && !DESTROYED(widget)) {
-                       ewl_object_state_add(EWL_OBJECT(widget),
-                                       EWL_FLAG_STATE_FOCUSED);
-                       ewl_callback_call(widget, EWL_CALLBACK_FOCUS_IN);
-               }
-       }
-
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
@@ -1536,13 +1513,29 @@
        DCHECK_TYPE(embed, EWL_EMBED_TYPE);
        DCHECK_TYPE(w, EWL_WIDGET_TYPE);
 
-       if (embed->last.focused && (embed->last.focused != w))
+       /*
+        * Determine whether this widget has already been selected, if not,
+        * deselect the previously selected widget and notify it of the
+        * change. Then select the new widget and notify it of the selection.
+        */
+       if (embed->last.focused && (embed->last.focused != w) &&
+                               !DESTROYED(embed->last.focused) &&
+                               !ewl_widget_parent_of(embed->last.focused, w))
+       {
+               ewl_object_state_remove(EWL_OBJECT(embed->last.focused),
+                                       EWL_FLAG_STATE_FOCUSED);
                ewl_callback_call(embed->last.focused, EWL_CALLBACK_FOCUS_OUT);
+       }
 
        embed->last.focused = w;
 
-       if (embed->last.focused)
+       if (embed->last.focused && !DISABLED(embed->last.focused) &&
+                               !DESTROYED(embed->last.focused))
+       {
+               ewl_object_state_add(EWL_OBJECT(embed->last.focused),
+                                       EWL_FLAG_STATE_FOCUSED);
                ewl_callback_call(embed->last.focused, EWL_CALLBACK_FOCUS_IN);
+       }
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to