Enlightenment CVS committal

Author  : rbdpngn
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src


Modified Files:
        ewl_embed.c ewl_enums.h ewl_misc.c ewl_widget.c ewl_window.c 


Log Message:
Some sanity checks for realizing to keep from triggering nasty recursion like
effects.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_embed.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ewl_embed.c 22 Sep 2003 06:09:24 -0000      1.4
+++ ewl_embed.c 25 Sep 2003 01:43:18 -0000      1.5
@@ -93,6 +93,7 @@
                           __ewl_embed_child_add, __ewl_embed_child_resize,
                           NULL);
        ewl_object_set_fill_policy(EWL_OBJECT(w), EWL_FILL_POLICY_NONE);
+       EWL_WIDGET(w)->flags |= EWL_FLAGS_TOPLEVEL;
 
        ewl_callback_append(EWL_WIDGET(w), EWL_CALLBACK_UNREALIZE,
                             __ewl_embed_unrealize, NULL);
@@ -255,6 +256,9 @@
 
        while (w->parent)
                w = w->parent;
+
+       if (!(w->flags & EWL_FLAGS_TOPLEVEL))
+               w = NULL;
 
        DRETURN_PTR(EWL_EMBED(w), DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_enums.h,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -3 -r1.38 -r1.39
--- ewl_enums.h 24 Sep 2003 07:12:25 -0000      1.38
+++ ewl_enums.h 25 Sep 2003 01:43:18 -0000      1.39
@@ -137,9 +137,10 @@
        EWL_FLAGS_REALIZED = 0x2,
        EWL_FLAGS_OBSCURED = 0x4,
        EWL_FLAGS_RECURSIVE = 0x8,
-       EWL_FLAGS_CSCHEDULED = 0x10,
-       EWL_FLAGS_RSCHEDULED = 0x20,
-       EWL_FLAGS_DSCHEDULED = 0x40,
+       EWL_FLAGS_TOPLEVEL = 0x10,
+       EWL_FLAGS_CSCHEDULED = 0x20,
+       EWL_FLAGS_RSCHEDULED = 0x40,
+       EWL_FLAGS_DSCHEDULED = 0x80,
 };
 
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_misc.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -3 -r1.37 -r1.38
--- ewl_misc.c  24 Sep 2003 07:12:25 -0000      1.37
+++ ewl_misc.c  25 Sep 2003 01:43:18 -0000      1.38
@@ -5,9 +5,10 @@
 
 char           *xdisplay = NULL;
 extern Ewd_List *ewl_embed_list;
-static Ewd_List *configure_list = NULL;
-static Ewd_List *realize_list = NULL;
-static Ewd_List *destroy_list = NULL;
+
+Ewd_List *configure_list = NULL;
+Ewd_List *realize_list = NULL;
+Ewd_List *destroy_list = NULL;
 
 void            __ewl_init_parse_options(int argc, char **argv);
 void            __ewl_parse_option_array(int argc, char **argv);
@@ -132,18 +133,18 @@
        if (ewd_list_is_empty(ewl_embed_list))
                DRETURN_INT(TRUE, DLEVEL_STABLE);
 
+       edje_freeze();
+
        /*
         * First realize any widgets that require it, this looping should
         * avoid deep recursion.
         */
        ewd_list_goto_first(realize_list);
        while ((w = ewd_list_remove_first(realize_list))) {
-               edje_freeze();
                if (VISIBLE(w) && !REALIZED(w)) {
                        w->flags &= ~EWL_FLAGS_RSCHEDULED;
                        ewl_widget_realize(EWL_WIDGET(w));
                }
-               edje_thaw();
        }
 
        /*
@@ -157,6 +158,7 @@
                w->flags &= ~EWL_FLAGS_CSCHEDULED;
                ewl_callback_call(w, EWL_CALLBACK_CONFIGURE);
        }
+       edje_thaw();
 
        /*
         * Allow each embed to render itself.
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_widget.c,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -3 -r1.71 -r1.72
--- ewl_widget.c        24 Sep 2003 07:12:25 -0000      1.71
+++ ewl_widget.c        25 Sep 2003 01:43:18 -0000      1.72
@@ -130,12 +130,15 @@
        if (REALIZED(w))
                DRETURN(DLEVEL_STABLE);
 
+       /*
+        * The parent's realize function will get us here again.
+        */
        if (w->parent && !REALIZED(w->parent))
                ewl_widget_realize(w->parent);
-
-       ewl_callback_call(w, EWL_CALLBACK_REALIZE);
-
-       ewl_widget_show(w);
+       else if (w->parent || w->flags & EWL_FLAGS_TOPLEVEL) {
+               ewl_callback_call(w, EWL_CALLBACK_REALIZE);
+               ewl_widget_show(w);
+       }
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_window.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -3 -r1.53 -r1.54
--- ewl_window.c        22 Sep 2003 06:09:24 -0000      1.53
+++ ewl_window.c        25 Sep 2003 01:43:18 -0000      1.54
@@ -237,7 +237,8 @@
 
        ecore_x_window_prop_name_class_set(window->window, "EWL", "EWL!");
        ecore_x_window_prop_title_set(window->window, window->title);
-       ecore_x_window_prop_delete_request_set(window->window, 1);
+       ecore_x_window_prop_protocol_set(window->window,
+                       ECORE_X_WM_PROTOCOL_DELETE_REQUEST,1);
 
        embed->evas = evas_new();
        evas_output_method_set(embed->evas,




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to