Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_evas


Modified Files:
        ecore_evas.c ecore_evas_private.h ecore_evas_x.c 


Log Message:
ignore events.
Should we add extra windows to the ignore list (ecore_x_window_ignore_set)?

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- ecore_evas.c        3 Oct 2005 06:45:45 -0000       1.21
+++ ecore_evas.c        8 Oct 2005 12:41:59 -0000       1.22
@@ -1517,6 +1517,46 @@
       return ee->prop.sticky ? 1:0;
 }
 
+/**
+ * Set if this evas should ignore events
+ *
+ * @param ee The Ecore_Evas whose window's to ignore events
+ * @param sticky The Ecore_Evas new ignore state
+ *
+ */
+void
+ecore_evas_ignore_events_set(Ecore_Evas *ee, int ignore)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+   {
+      ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+         "ecore_evas_ignore_events_set");
+      return;
+   }
+   
+   IFC(ee, fn_ignore_events_set) (ee, ignore);
+   IFE;
+}
+
+/**
+ * Returns the ignore state of an Ecore_Evas' window.
+ * 
+ * @param ee The Ecore_Evas whose window's ignore events state is returned.
+ * @return The Ecore_Evas window's ignore state.
+ *
+ */
+int
+ecore_evas_ignore_events_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+   {
+      ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+         "ecore_evas_ignore_events_get");
+      return 0;
+   } else
+      return ee->ignore_events ? 1 : 0;
+}
+
 #ifndef WIN32
 /* fps debug calls - for debugging how much time your app actually spends */
 /* rendering graphics... :) */
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_private.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- ecore_evas_private.h        3 Oct 2005 06:45:45 -0000       1.17
+++ ecore_evas_private.h        8 Oct 2005 12:41:59 -0000       1.18
@@ -82,6 +82,7 @@
    void        (*fn_avoid_damage_set) (Ecore_Evas *ee, int on);
    void        (*fn_withdrawn_set) (Ecore_Evas *ee, int withdrawn);
    void        (*fn_sticky_set) (Ecore_Evas *ee, int sticky);
+   void        (*fn_ignore_events_set) (Ecore_Evas *ee, int ignore);
 };
 
 struct _Ecore_Evas_Engine
@@ -205,6 +206,8 @@
    
    Ecore_Evas_Engine engine;
    Evas_List *sub_ecore_evas;
+
+   unsigned char ignore_events : 1;
 };
 
 #ifdef BUILD_ECORE_X
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_evas/ecore_evas_x.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -3 -r1.59 -r1.60
--- ecore_evas_x.c      4 Oct 2005 18:19:16 -0000       1.59
+++ ecore_evas_x.c      8 Oct 2005 12:41:59 -0000       1.60
@@ -333,7 +333,7 @@
    
    e = event;
    ee = _ecore_evas_x_match(e->win);
-   if (!ee) return 1; /* pass on event */
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
    _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
    evas_event_feed_key_down(ee->evas, e->keyname, e->keysymbol, 
e->key_compose, NULL, e->time, NULL);
    return 1;
@@ -347,7 +347,7 @@
    
    e = event;
    ee = _ecore_evas_x_match(e->win);
-   if (!ee) return 1; /* pass on event */
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
    _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
    evas_event_feed_key_up(ee->evas, e->keyname, e->keysymbol, e->key_compose, 
NULL, e->time, NULL);
    return 1;
@@ -362,7 +362,7 @@
    
    e = event;
    ee = _ecore_evas_x_match(e->win);
-   if (!ee) return 1; /* pass on event */
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
    _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
    if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
    if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
@@ -378,7 +378,7 @@
    
    e = event;
    ee = _ecore_evas_x_match(e->win);
-   if (!ee) return 1; /* pass on event */
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
    _ecore_evas_x_modifier_locks_update(ee, e->modifiers);   
    evas_event_feed_mouse_up(ee->evas, e->button, EVAS_BUTTON_NONE, e->time, 
NULL);
    return 1;
@@ -393,8 +393,7 @@
    e = event;
    ee = _ecore_evas_x_match(e->win);
 
-   if (!ee)
-      return 1; /* pass on event */
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
 
    _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
    evas_event_feed_mouse_wheel(ee->evas, e->direction, e->z, e->time, NULL);
@@ -410,7 +409,7 @@
    
    e = event;
    ee = _ecore_evas_x_match(e->win);
-   if (!ee) return 1; /* pass on event */
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
    _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
    _ecore_evas_x_mouse_move_process(ee, e->x, e->y, e->time);
    return 1;
@@ -424,7 +423,7 @@
    
    e = event;
    ee = _ecore_evas_x_match(e->win);
-   if (!ee) return 1; /* pass on event */
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
    if (e->event_win == ee->engine.x.win_container) return 0;
 /* if (e->mode != ECORE_X_EVENT_MODE_NORMAL) return 0; */
    if (ee->func.fn_mouse_in) ee->func.fn_mouse_in(ee);
@@ -442,7 +441,7 @@
    
    e = event;
    ee = _ecore_evas_x_match(e->win);
-   if (!ee) return 1; /* pass on event */
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
    if (e->event_win == ee->engine.x.win_container) return 0;
 /* if (e->mode != ECORE_X_EVENT_MODE_NORMAL) return 0; */
    _ecore_evas_x_modifier_locks_update(ee, e->modifiers);   
@@ -461,7 +460,7 @@
    
    e = event;
    ee = _ecore_evas_x_match(e->win);
-   if (!ee) return 1; /* pass on event */
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
    ee->prop.focused = 1;
    if (ee->func.fn_focus_in) ee->func.fn_focus_in(ee);
    return 1;
@@ -475,7 +474,7 @@
    
    e = event;
    ee = _ecore_evas_x_match(e->win);
-   if (!ee) return 1; /* pass on event */
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
    if (ee->prop.fullscreen)
      ecore_x_window_focus(ee->engine.x.win);
    ee->prop.focused = 0;
@@ -1385,6 +1384,30 @@
 }
 
 static void
+_ecore_evas_x_ignore_events_set(Ecore_Evas *ee, int ignore)
+{
+   if ((ee->ignore_events && ignore) ||
+       (!ee->ignore_events && !ignore)) return;
+
+   if (ignore)
+     {
+       ee->ignore_events = 1;
+       if (ee->engine.x.win_container)
+         ecore_x_window_ignore_set(ee->engine.x.win_container, 1);
+       if (ee->engine.x.win)
+         ecore_x_window_ignore_set(ee->engine.x.win, 1);
+     }
+   else
+     {
+       ee->ignore_events = 0;
+       if (ee->engine.x.win_container)
+         ecore_x_window_ignore_set(ee->engine.x.win_container, 0);
+       if (ee->engine.x.win)
+         ecore_x_window_ignore_set(ee->engine.x.win, 0);
+     }
+}
+
+static void
 _ecore_evas_x_override_set(Ecore_Evas *ee, int on)
 {
    if (((ee->prop.override) && (on)) ||
@@ -1605,7 +1628,8 @@
      _ecore_evas_x_fullscreen_set,
      _ecore_evas_x_avoid_damage_set,
      _ecore_evas_x_withdrawn_set,
-     _ecore_evas_x_sticky_set
+     _ecore_evas_x_sticky_set,
+     _ecore_evas_x_ignore_events_set
 };
 #endif
 




-------------------------------------------------------
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