Enlightenment CVS committal

Author  : sebastid
Project : misc
Module  : embrace

Dir     : misc/embrace/src


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
Don't let mouse events through to the e canvas.

===================================================================
RCS file: /cvsroot/enlightenment/misc/embrace/src/e_mod_main.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- e_mod_main.c        26 Sep 2005 22:54:06 -0000      1.9
+++ e_mod_main.c        9 Oct 2005 15:29:22 -0000       1.10
@@ -5,15 +5,17 @@
 #include <ltdl.h>
 
 #include <e.h>
-#include "e_mod_main.h"
 #include "embrace.h"
+#include "e_mod_main.h"
 
 /* module private routines */
-static Embrace      *embrace_module_new (void);
-static void          embrace_module_free (Embrace *embrace);
-static E_Menu       *embrace_config_menu_new (void);
-
-static void          embrace_cb_gmc_change (void *data, E_Gadman_Client *gmc, 
E_Gadman_Change change);
+static EmbraceModule *embrace_module_new (void);
+static void           embrace_module_free (EmbraceModule *em);
+static E_Menu        *embrace_config_menu_new (void);
+
+static void           embrace_cb_gmc_change (void *data, E_Gadman_Client *gmc, 
E_Gadman_Change change);
+static void           embrace_cb_mouse_down (void *data, Evas *e, Evas_Object 
*obj, void *event_info);
+static void           embrace_cb_mouse_up (void *data, Evas *e, Evas_Object 
*obj, void *event_info);
 
 #if 0
 static void          _embrace_desk_cb_mouse_in (void *data, Evas *e, 
Evas_Object *obj, void *event_info);
@@ -27,7 +29,6 @@
 #endif
 
 static int              embrace_count;
-static E_Gadman_Client *gmc = NULL;
 
 /* public module routines. all modules must have these */
 
@@ -38,25 +39,25 @@
 
 void *e_modapi_init (E_Module *module)
 {
-       Embrace *embrace = NULL;
+       EmbraceModule *em = NULL;
 
        /* actually init embrace */
-       embrace = embrace_module_new ();
+       em = embrace_module_new ();
        module->config_menu = embrace_config_menu_new ();
 
-       return embrace;
+       return em;
 }
 
 int e_modapi_shutdown (E_Module *module)
 {
-       Embrace *embrace;
+       EmbraceModule *em;
 
        if (module->config_menu)
                e_object_del (E_OBJECT (module->config_menu));
 
-       embrace = module->data;
-       if (embrace)
-               embrace_module_free (embrace);
+       em = module->data;
+       if (em)
+               embrace_module_free (em);
 
        return 1;
 }
@@ -94,12 +95,13 @@
 }
 
 /* module private routines */
-static Embrace *embrace_module_new (void)
+static EmbraceModule *embrace_module_new (void)
 {
-       Embrace     *embrace;
+       EmbraceModule *em;
+       Evas_Object   *o;
 
-       E_Manager   *man;
-       E_Container *con;
+       E_Manager     *man;
+       E_Container   *con;
 
        embrace_count = 0;
 
@@ -108,46 +110,62 @@
                return NULL;
        }
 
-       embrace = embrace_new ();
-       if (!embrace)
+       em = E_NEW (EmbraceModule, 1);
+       if (!em) return NULL;
+
+       em->embrace = embrace_new ();
+       if (!em->embrace) {
+               free (em);
                return NULL;
+       }
 
        man = e_manager_current_get ();
        con = e_container_current_get (man);
-       embrace->gui.evas = con->bg_evas;
-       embrace->cfg.module = 1;
+       em->embrace->gui.evas = con->bg_evas;
+       em->embrace->cfg.module = 1;
+
+       embrace_init (em->embrace);
 
-       embrace_init (embrace);
+       o = evas_object_rectangle_add (em->embrace->gui.evas);
+       em->event_object = o;
+       evas_object_pass_events_set (o, 0);
+       evas_object_color_set (o, 0, 0, 0, 0);
+       evas_object_event_callback_add (o, EVAS_CALLBACK_MOUSE_DOWN, 
embrace_cb_mouse_down, em);
+       evas_object_event_callback_add (o, EVAS_CALLBACK_MOUSE_UP, 
embrace_cb_mouse_up, em);
+       evas_object_show (o);
+       evas_object_stack_below (o, em->embrace->gui.edje);
 
-       gmc = e_gadman_client_new (con->gadman);
-       e_gadman_client_domain_set (gmc, "module.embrace", embrace_count++);
-       e_gadman_client_policy_set (gmc,
+       em->gmc = e_gadman_client_new (con->gadman);
+       e_gadman_client_domain_set (em->gmc, "module.embrace", embrace_count++);
+       e_gadman_client_policy_set (em->gmc,
                        E_GADMAN_POLICY_ANYWHERE |
                        E_GADMAN_POLICY_HMOVE |
                        E_GADMAN_POLICY_VMOVE |
                        E_GADMAN_POLICY_HSIZE |
                        E_GADMAN_POLICY_VSIZE);
-       e_gadman_client_min_size_set (gmc, 8, 8);
-       e_gadman_client_max_size_set (gmc, 2000, 2000);
-       e_gadman_client_auto_size_set (gmc, 186, 40);
-       e_gadman_client_align_set (gmc, 0.0, 0.0);
-       e_gadman_client_resize (gmc, 186, 40);
-       e_gadman_client_change_func_set (gmc, embrace_cb_gmc_change, embrace);
-       e_gadman_client_load (gmc);
+       e_gadman_client_min_size_set (em->gmc, 8, 8);
+       e_gadman_client_max_size_set (em->gmc, 2000, 2000);
+       e_gadman_client_auto_size_set (em->gmc, 186, 40);
+       e_gadman_client_align_set (em->gmc, 0.0, 0.0);
+       e_gadman_client_resize (em->gmc, 186, 40);
+       e_gadman_client_change_func_set (em->gmc, embrace_cb_gmc_change, em);
+       e_gadman_client_load (em->gmc);
 
-       embrace_run (embrace);
+       embrace_run (em->embrace);
 
-       return embrace;
+       return em;
 }
 
-static void embrace_module_free (Embrace *embrace)
+static void embrace_module_free (EmbraceModule *em)
 {
+       e_object_del (E_OBJECT (em->gmc));
+       evas_object_del (em->event_object);
 
-       e_object_del (E_OBJECT (gmc));
+       embrace_stop (em->embrace);
+       embrace_deinit (em->embrace);
+       embrace_free (em->embrace);
 
-       embrace_stop (embrace);
-       embrace_deinit (embrace);
-       embrace_free (embrace);
+       free (em);
 
        embrace_count--;
 
@@ -169,26 +187,43 @@
 
 static void embrace_cb_gmc_change (void *data, E_Gadman_Client *gmc, 
E_Gadman_Change change)
 {
-   Embrace *embrace;
+   EmbraceModule *em;
    Evas_Coord  x, y, w, h;
 
-   embrace = data;
-   e_gadman_client_geometry_get (gmc, &x, &y, &w, &h);
+   em = data;
+   e_gadman_client_geometry_get (em->gmc, &x, &y, &w, &h);
 
    switch (change)
      {
       case E_GADMAN_CHANGE_MOVE_RESIZE:
-       evas_object_move (embrace->gui.edje, x, y);
-       evas_object_resize (embrace->gui.edje, w, h);
+       evas_object_move (em->embrace->gui.edje, x, y);
+       evas_object_resize (em->embrace->gui.edje, w, h);
+       evas_object_move (em->event_object, x, y);
+       evas_object_resize (em->event_object, w, h);
        break;
       case E_GADMAN_CHANGE_RAISE:
-       evas_object_raise (embrace->gui.edje);
+       evas_object_raise (em->embrace->gui.edje);
+       evas_object_stack_below (em->event_object, em->embrace->gui.edje);
        break;
       default:
        break;
      }
 }
 
+static void embrace_cb_mouse_down (void *data, Evas *e, Evas_Object *obj, void 
*event_info)
+{
+   EmbraceModule *em;
+
+   em = data;
+}
+
+static void embrace_cb_mouse_up (void *data, Evas *e, Evas_Object *obj, void 
*event_info)
+{
+   EmbraceModule *em;
+
+   em = data;
+}
+
 #if 0
 static Embrace_Face *_embrace_face_new (Embrace *embrace, E_Zone *zone) {
        Embrace_Face  *face;
===================================================================
RCS file: /cvsroot/enlightenment/misc/embrace/src/e_mod_main.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_mod_main.h        24 Sep 2005 13:55:34 -0000      1.3
+++ e_mod_main.h        9 Oct 2005 15:29:22 -0000       1.4
@@ -1,6 +1,13 @@
 #ifndef E_MOD_MAIN_H
 #define E_MOD_MAIN_H
 
+typedef struct {
+       Embrace *embrace;
+
+       E_Gadman_Client *gmc;
+       Evas_Object     *event_object;
+} EmbraceModule;
+
 extern E_Module_Api e_modapi;
 
 EAPI void *e_modapi_init     (E_Module *module);




-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to