Enlightenment CVS committal

Author  : rbdpngn
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src


Modified Files:
        ewl_embed.c ewl_embed.h ewl_window.c 


Log Message:
* Add the evas callbacks after the embed has been realized.
* Move the destruction of the windows into the unrealize callback.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_embed.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- ewl_embed.c 28 Apr 2004 13:45:57 -0000      1.32
+++ ewl_embed.c 28 Apr 2004 18:04:44 -0000      1.33
@@ -93,6 +93,8 @@
        ewl_object_set_fill_policy(EWL_OBJECT(w), EWL_FLAG_FILL_NONE);
        ewl_object_set_toplevel(EWL_OBJECT(w), EWL_FLAG_PROPERTY_TOPLEVEL);
 
+       ewl_callback_append(EWL_WIDGET(w), EWL_CALLBACK_REALIZE,
+                            ewl_embed_realize_cb, NULL);
        ewl_callback_append(EWL_WIDGET(w), EWL_CALLBACK_UNREALIZE,
                             ewl_embed_unrealize_cb, NULL);
        ewl_callback_prepend(EWL_WIDGET(w), EWL_CALLBACK_DESTROY,
@@ -160,43 +162,6 @@
        if (VISIBLE(w))
                ewl_realize_request(w);
 
-       if (w->fx_clip_box) {
-               evas_object_clip_set(emb->smart, w->fx_clip_box);
-               evas_object_repeat_events_set(w->fx_clip_box, FALSE);
-
-               /*
-                * Catch mouse events processed through the evas
-                */
-               evas_object_event_callback_add(w->fx_clip_box,
-                               EVAS_CALLBACK_MOUSE_IN,
-                               ewl_embed_evas_mouse_in_cb, emb);
-               evas_object_event_callback_add(w->fx_clip_box,
-                               EVAS_CALLBACK_MOUSE_OUT,
-                               ewl_embed_evas_mouse_out_cb, emb);
-               evas_object_event_callback_add(w->fx_clip_box,
-                               EVAS_CALLBACK_MOUSE_DOWN,
-                               ewl_embed_evas_mouse_down_cb, emb);
-               evas_object_event_callback_add(w->fx_clip_box,
-                               EVAS_CALLBACK_MOUSE_UP,
-                               ewl_embed_evas_mouse_up_cb, emb);
-               evas_object_event_callback_add(w->fx_clip_box,
-                               EVAS_CALLBACK_MOUSE_MOVE,
-                               ewl_embed_evas_mouse_move_cb, emb);
-               evas_object_event_callback_add(w->fx_clip_box,
-                               EVAS_CALLBACK_MOUSE_WHEEL,
-                               ewl_embed_evas_mouse_wheel_cb, emb);
-
-               /*
-                * Catch key events processed through the evas
-                */
-               evas_object_event_callback_add(w->fx_clip_box,
-                               EVAS_CALLBACK_KEY_DOWN,
-                               ewl_embed_evas_key_down_cb, emb);
-               evas_object_event_callback_add(w->fx_clip_box,
-                               EVAS_CALLBACK_KEY_UP, ewl_embed_evas_key_up_cb,
-                               emb);
-       }
-
        paths = ewl_theme_font_path_get();
        ecore_list_goto_first(paths);
        while ((font_path = ecore_list_next(paths))) {
@@ -691,6 +656,51 @@
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
+void ewl_embed_realize_cb(Ewl_Widget *w, void *ev_data, void *user_data)
+{
+       Ewl_Embed *emb = EWL_EMBED(w);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       if (w->fx_clip_box) {
+               evas_object_clip_set(emb->smart, w->fx_clip_box);
+               evas_object_repeat_events_set(w->fx_clip_box, FALSE);
+
+               /*
+                * Catch mouse events processed through the evas
+                */
+               evas_object_event_callback_add(w->fx_clip_box,
+                               EVAS_CALLBACK_MOUSE_IN,
+                               ewl_embed_evas_mouse_in_cb, emb);
+               evas_object_event_callback_add(w->fx_clip_box,
+                               EVAS_CALLBACK_MOUSE_OUT,
+                               ewl_embed_evas_mouse_out_cb, emb);
+               evas_object_event_callback_add(w->fx_clip_box,
+                               EVAS_CALLBACK_MOUSE_DOWN,
+                               ewl_embed_evas_mouse_down_cb, emb);
+               evas_object_event_callback_add(w->fx_clip_box,
+                               EVAS_CALLBACK_MOUSE_UP,
+                               ewl_embed_evas_mouse_up_cb, emb);
+               evas_object_event_callback_add(w->fx_clip_box,
+                               EVAS_CALLBACK_MOUSE_MOVE,
+                               ewl_embed_evas_mouse_move_cb, emb);
+               evas_object_event_callback_add(w->fx_clip_box,
+                               EVAS_CALLBACK_MOUSE_WHEEL,
+                               ewl_embed_evas_mouse_wheel_cb, emb);
+
+               /*
+                * Catch key events processed through the evas
+                */
+               evas_object_event_callback_add(w->fx_clip_box,
+                               EVAS_CALLBACK_KEY_DOWN,
+                               ewl_embed_evas_key_down_cb, emb);
+               evas_object_event_callback_add(w->fx_clip_box,
+                               EVAS_CALLBACK_KEY_UP, ewl_embed_evas_key_up_cb,
+                               emb);
+       }
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
 void ewl_embed_unrealize_cb(Ewl_Widget *w, void *ev_data, void *user_data)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_embed.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- ewl_embed.h 24 Mar 2004 04:11:09 -0000      1.20
+++ ewl_embed.h 28 Apr 2004 18:05:01 -0000      1.21
@@ -70,6 +70,7 @@
 /*
  * Internally used callbacks, override at your own risk.
  */
+void ewl_embed_realize_cb(Ewl_Widget *w, void *ev_data, void *user_data);
 void ewl_embed_unrealize_cb(Ewl_Widget *w, void *ev_data, void *user_data);
 void ewl_embed_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_window.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -3 -r1.78 -r1.79
--- ewl_window.c        28 Apr 2004 13:45:57 -0000      1.78
+++ ewl_window.c        28 Apr 2004 18:05:01 -0000      1.79
@@ -494,9 +494,15 @@
        embed->evas = NULL;
 
 #ifdef HAVE_EVAS_ENGINE_SOFTWARE_X11_H
-       if (strstr(EWL_WINDOW(embed)->render, "x11"))
-               ecore_x_window_del((Ecore_X_Window)EWL_WINDOW(embed)->window);
+       if (REALIZED(w) && strstr(EWL_WINDOW(w)->render, "x11")) {
+               ecore_x_window_hide((Ecore_X_Window)embed->evas_window);
+               ecore_x_window_hide((Ecore_X_Window)EWL_WINDOW(w)->window);
+
+               ecore_x_window_del((Ecore_X_Window)embed->evas_window);
+               ecore_x_window_del((Ecore_X_Window)EWL_WINDOW(w)->window);
+       }
 #endif
+       IF_FREE(EWL_WINDOW(w)->render);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -547,18 +553,7 @@
 
        win = EWL_WINDOW(w);
 
-#ifdef HAVE_EVAS_ENGINE_SOFTWARE_X11_H
-       if (REALIZED(win) && strstr(win->render, "x11")) {
-               ecore_x_window_hide((Ecore_X_Window)EWL_EMBED(win)->evas_window);
-               ecore_x_window_hide((Ecore_X_Window)win->window);
-
-               ecore_x_window_del((Ecore_X_Window)EWL_EMBED(win)->evas_window);
-               ecore_x_window_del((Ecore_X_Window)win->window);
-       }
-#endif
-
        IF_FREE(win->title);
-       IF_FREE(win->render);
 
        if ((win = ecore_list_goto(ewl_window_list, win)))
                ecore_list_remove(ewl_window_list);




-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g. 
Take an Oracle 10g class now, and we'll give you the exam FREE. 
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to