Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_container.c ewl_embed.c ewl_misc.c ewl_object.h 
        ewl_widget.c 


Log Message:
- put the destroy checks into a macro to make the code easier to read
- make sure we check that neither widget or deselect have been destroyed
  during mouse_up_feed 

===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_container.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -3 -r1.40 -r1.41
--- ewl_container.c     21 May 2006 03:51:41 -0000      1.40
+++ ewl_container.c     25 May 2006 17:56:08 -0000      1.41
@@ -1064,9 +1064,7 @@
        DCHECK_TYPE("w", w, EWL_WIDGET_TYPE);
 
        /* do nothing if the container is being destroyed */
-       if (ewl_object_queued_has(EWL_OBJECT(c), EWL_FLAG_QUEUED_DPROCESS) 
-                       || ewl_object_queued_has(EWL_OBJECT(c),
-                                       EWL_FLAG_QUEUED_DSCHEDULED))
+       if (DESTROYED(c))
                DRETURN(DLEVEL_STABLE);
 
        if (c->child_remove)
@@ -1120,9 +1118,7 @@
        DCHECK_TYPE("w", w, EWL_WIDGET_TYPE);
 
        /* do nothing if the container is being destroyed */
-       if (ewl_object_queued_has(EWL_OBJECT(c), EWL_FLAG_QUEUED_DPROCESS) 
-                       || ewl_object_queued_has(EWL_OBJECT(c),
-                                       EWL_FLAG_QUEUED_DSCHEDULED))
+       if (DESTROYED(c))
                DRETURN(DLEVEL_STABLE);
 
        if (c->child_hide)
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_embed.c,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -3 -r1.61 -r1.62
--- ewl_embed.c 25 May 2006 05:57:12 -0000      1.61
+++ ewl_embed.c 25 May 2006 17:56:08 -0000      1.62
@@ -513,14 +513,19 @@
         * change. Then select the new widget and notify it of the selection.
         */
        if (widget != deselect) {
-               if (deselect) {
+               /* 
+                * Make sure these widgets haven't been scheduled for
+                * deletion before we send their callbacks. 
+                */
+               if (deselect && !DESTROYED(deselect)) {
                        ewl_object_state_remove(EWL_OBJECT(deselect),
-                                       EWL_FLAG_STATE_FOCUSED);
+                                               EWL_FLAG_STATE_FOCUSED);
                        ewl_callback_call(deselect, EWL_CALLBACK_FOCUS_OUT);
                }
 
                if (widget && !(ewl_object_state_has(EWL_OBJECT(widget),
-                                       EWL_FLAG_STATE_DISABLED))) {
+                                       EWL_FLAG_STATE_DISABLED))
+                               && !DESTROYED(widget)) {
                        ewl_object_state_add(EWL_OBJECT(widget),
                                        EWL_FLAG_STATE_FOCUSED);
                        ewl_callback_call(widget, EWL_CALLBACK_FOCUS_IN);
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_misc.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -3 -r1.53 -r1.54
--- ewl_misc.c  25 May 2006 04:50:17 -0000      1.53
+++ ewl_misc.c  25 May 2006 17:56:08 -0000      1.54
@@ -815,8 +815,9 @@
                if (!o)
                        DRETURN(DLEVEL_STABLE);
 
-               if (!ewl_object_queued_has(EWL_OBJECT(o), 
EWL_FLAG_QUEUED_RPROCESS)) {
-                       if (!REALIZED(o))
+               if (!ewl_object_queued_has(EWL_OBJECT(o), 
+                               EWL_FLAG_QUEUED_RPROCESS)) {
+                       if (!REALIZED(o))
                                DRETURN(DLEVEL_STABLE);
                }
        }
@@ -984,14 +985,10 @@
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("w", w);
 
-       if ((ewl_object_queued_has(EWL_OBJECT(w), EWL_FLAG_QUEUED_DSCHEDULED))
-                       || (ewl_object_queued_has(EWL_OBJECT(w),
-                                               EWL_FLAG_QUEUED_DPROCESS)))
+       if (DESTROYED(w))
                DRETURN(DLEVEL_STABLE);
 
-       if ((ewl_object_queued_has(EWL_OBJECT(w), EWL_FLAG_QUEUED_CSCHEDULED))
-                       || (ewl_object_queued_has(EWL_OBJECT(w),
-                                               EWL_FLAG_QUEUED_CPROCESS)))
+       if (CONFIGURED(w))
                ewl_configure_cancel_request(w);
 
        ewl_object_queued_add(EWL_OBJECT(w), EWL_FLAG_QUEUED_DSCHEDULED);
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_object.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- ewl_object.h        20 May 2006 08:14:54 -0000      1.11
+++ ewl_object.h        25 May 2006 17:56:08 -0000      1.12
@@ -523,6 +523,23 @@
 #define HIDDEN(o) (!(EWL_OBJECT(o)->flags & EWL_FLAG_VISIBLE_SHOWN))
 
 /**
+ * @def DESTROYED(o)
+ * Used to determine if a widget has been destroyed
+ */
+#define DESTROYED(o) (ewl_object_queued_has(EWL_OBJECT(o), \
+                                       EWL_FLAG_QUEUED_DSCHEDULED) \
+                       || ewl_object_queued_has(EWL_OBJECT(o), \
+                                       EWL_FLAG_QUEUED_DPROCESS))
+
+/**
+ * @def CONFIGURED(o)
+ * Used to determine if a widget is scheduled for configure
+ */
+#define CONFIGURED(o) (ewl_object_queued_has(EWL_OBJECT(o), \
+                                       EWL_FLAG_QUEUED_CSCHEDULED) \
+                       || ewl_object_queued_has(EWL_OBJECT(o), \
+                                         EWL_FLAG_QUEUED_CPROCESS))
+/**
  * @}
  */
 
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_widget.c,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -3 -r1.79 -r1.80
--- ewl_widget.c        25 May 2006 05:57:12 -0000      1.79
+++ ewl_widget.c        25 May 2006 17:56:08 -0000      1.80
@@ -405,11 +405,8 @@
        DCHECK_PARAM_PTR("w", w);
        DCHECK_TYPE("w", w, EWL_WIDGET_TYPE);
 
-       if ((ewl_object_queued_has(EWL_OBJECT(w), EWL_FLAG_QUEUED_DSCHEDULED))
-                       || (ewl_object_queued_has(EWL_OBJECT(w), 
-                                       EWL_FLAG_QUEUED_DPROCESS)))
+       if (DESTROYED(w))
                DRETURN(DLEVEL_STABLE);
-
 
        /* cleanup any dnd widgets */
        if (w == ewl_widget_drag_candidate_get())




-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to