Enlightenment CVS committal

Author  : rbdpngn
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src


Modified Files:
        ewl_embed.c ewl_embed.h ewl_enums.h ewl_events.c ewl_events.h 


Log Message:
More progress on generic event dispatching. Re-enabled textarea test. Changed
the key names for the textarea colors in the theme.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_embed.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- ewl_embed.c 27 Feb 2004 00:30:58 -0000      1.26
+++ ewl_embed.c 27 Feb 2004 18:46:44 -0000      1.27
@@ -212,7 +212,8 @@
  * @return Returns no value.
  * @brief Sends the event for a key press into an embed.
  */
-void ewl_embed_feed_key_down(Ewl_Embed *embed, char *keyname)
+void
+ewl_embed_feed_key_down(Ewl_Embed *embed, char *keyname, unsigned int mods)
 {
        Ewl_Widget *temp;
        Ewl_Event_Key_Down ev;
@@ -221,6 +222,7 @@
        DCHECK_PARAM_PTR("embed", embed);
        DCHECK_PARAM_PTR("keyname", keyname);
 
+       ev.modifiers = mods;
        ev.keyname = strdup(keyname);
 
        /*
@@ -260,7 +262,7 @@
  * @return Returns no value.
  * @brief Sends the event for a key release into an embed.
  */
-void ewl_embed_feed_key_up(Ewl_Embed *embed, char *keyname)
+void ewl_embed_feed_key_up(Ewl_Embed *embed, char *keyname, unsigned int mods)
 {
        Ewl_Widget *temp;
        Ewl_Event_Key_Up ev;
@@ -269,6 +271,7 @@
        DCHECK_PARAM_PTR("embed", embed);
        DCHECK_PARAM_PTR("keyname", keyname);
 
+       ev.modifiers = mods;
        ev.keyname = strdup(keyname);
 
        /*
@@ -296,7 +299,9 @@
  * @return Returns no value.
  * @brief Sends the event for a mouse button press into an embed.
  */
-void ewl_embed_feed_mouse_down(Ewl_Embed *embed, int b, int x, int y)
+void
+ewl_embed_feed_mouse_down(Ewl_Embed *embed, int b, int x, int y, unsigned
+                         int mods)
 {
        int double_click = 0;
        Ewl_Event_Mouse_Down ev;
@@ -337,6 +342,7 @@
                }
        }
 
+       ev.modifiers = mods;
        ev.x = x;
        ev.y = y;
        ev.button = b;
@@ -373,7 +379,9 @@
  * @return Returns no value.
  * @brief Sends the event for a mouse button release into an embed.
  */
-void ewl_embed_feed_mouse_up(Ewl_Embed *embed, int b, int x, int y)
+void
+ewl_embed_feed_mouse_up(Ewl_Embed *embed, int b, int x, int y,
+                       unsigned int mods)
 {
        Ewl_Widget *temp;
        Ewl_Event_Mouse_Up ev;
@@ -381,6 +389,7 @@
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("embed", embed);
 
+       ev.modifiers = mods;
        ev.x = x;
        ev.y = y;
        ev.button = b;
@@ -406,7 +415,8 @@
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
-void ewl_embed_feed_mouse_move(Ewl_Embed *embed, int x, int y)
+void
+ewl_embed_feed_mouse_move(Ewl_Embed *embed, int x, int y, unsigned int mods)
 {
        Ewl_Widget *widget;
        Ewl_Event_Mouse_Move ev;
@@ -417,6 +427,7 @@
        widget = ewl_container_get_child_at_recursive(EWL_CONTAINER(embed),
                        x, y);
 
+       ev.modifiers = mods;
        ev.x = x;
        ev.y = y;
 
@@ -480,12 +491,18 @@
  * @return Returns no value.
  * @brief Sends a mouse out event to the last focused widget
  */
-void ewl_embed_feed_mouse_out()
+void ewl_embed_feed_mouse_out(Ewl_Embed *e, int x, int y, unsigned int mods)
 {
+       Ewl_Event_Mouse_Out ev;
        DENTER_FUNCTION(DLEVEL_STABLE);
 
+       ev.modifiers = mods;
+       ev.x = x;
+       ev.y = y;
+
        while (last_focused) {
-               ewl_callback_call(last_focused, EWL_CALLBACK_FOCUS_OUT);
+               ewl_callback_call_with_event_data(last_focused,
+                                                 EWL_CALLBACK_FOCUS_OUT, &ev);
                last_focused = last_focused->parent;
        }
 
@@ -866,9 +883,14 @@
 ewl_embed_evas_mouse_out_cb(void *data, Evas *e, Evas_Object *obj,
                            void *event_info)
 {
+       Ewl_Embed *embed;
+       Evas_Event_Mouse_Out *ev = event_info;
+
        DENTER_FUNCTION(DLEVEL_STABLE);
 
-       ewl_embed_feed_mouse_out();
+       embed = evas_object_smart_data_get(obj);
+       ewl_embed_feed_mouse_out(embed, ev->canvas.x, ev->canvas.y,
+                                ewl_ev_get_modifiers());
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -884,7 +906,7 @@
 
        embed = evas_object_smart_data_get(obj);
        ewl_embed_feed_mouse_down(embed, ev->button, ev->canvas.x,
-                                 ev->canvas.y);
+                                 ev->canvas.y, ewl_ev_get_modifiers());
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -900,7 +922,7 @@
 
        embed = evas_object_smart_data_get(obj);
        ewl_embed_feed_mouse_up(embed, ev->button, ev->canvas.x,
-                                 ev->canvas.y);
+                                 ev->canvas.y, ewl_ev_get_modifiers());
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -915,7 +937,8 @@
        DENTER_FUNCTION(DLEVEL_STABLE);
 
        embed = evas_object_smart_data_get(obj);
-       ewl_embed_feed_mouse_move(embed, ev->canvas.x, ev->canvas.y);
+       ewl_embed_feed_mouse_move(embed, ev->canvas.x, ev->canvas.y,
+                                 ewl_ev_get_modifiers());
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -939,7 +962,7 @@
        DENTER_FUNCTION(DLEVEL_STABLE);
 
        embed = evas_object_smart_data_get(obj);
-       ewl_embed_feed_key_down(embed, ev->keyname);
+       ewl_embed_feed_key_down(embed, ev->keyname, ewl_ev_get_modifiers());
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -954,7 +977,7 @@
        DENTER_FUNCTION(DLEVEL_STABLE);
 
        embed = evas_object_smart_data_get(obj);
-       ewl_embed_feed_key_up(embed, ev->keyname);
+       ewl_embed_feed_key_up(embed, ev->keyname, ewl_ev_get_modifiers());
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_embed.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- ewl_embed.h 27 Feb 2004 00:30:58 -0000      1.17
+++ ewl_embed.h 27 Feb 2004 18:46:49 -0000      1.18
@@ -46,14 +46,18 @@
 int             ewl_embed_init(Ewl_Embed * win);
 Evas_Object    *ewl_embed_set_evas(Ewl_Embed *emb, Evas *evas,
                                   void *evas_window);
-void            ewl_embed_feed_key_down(Ewl_Embed *embed, char *keyname);
-void            ewl_embed_feed_key_up(Ewl_Embed *embed, char *keyname);
+void            ewl_embed_feed_key_down(Ewl_Embed *embed, char *keyname,
+                                       unsigned int modifiers);
+void            ewl_embed_feed_key_up(Ewl_Embed *embed, char *keyname,
+                                     unsigned int modifiers);
 void            ewl_embed_feed_mouse_down(Ewl_Embed *embed, int b, int x,
-                                         int y);
+                                         int y, unsigned int modifiers);
 void            ewl_embed_feed_mouse_up(Ewl_Embed *embed, int b, int x,
-                                       int y);
-void            ewl_embed_feed_mouse_move(Ewl_Embed *embed, int x, int y);
-void            ewl_embed_feed_mouse_out();
+                                       int y, unsigned int modifiers);
+void            ewl_embed_feed_mouse_move(Ewl_Embed *embed, int x, int y,
+                                         unsigned int modifiers);
+void            ewl_embed_feed_mouse_out(Ewl_Embed *embed, int x, int y,
+                                        unsigned int modifiers);
 void            ewl_embed_font_path_add(char *path);
 Ewl_Embed      *ewl_embed_find_by_evas_window(void *win);
 Ewl_Embed      *ewl_embed_find_by_widget(Ewl_Widget * w);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_enums.h,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -3 -r1.48 -r1.49
--- ewl_enums.h 27 Feb 2004 00:30:58 -0000      1.48
+++ ewl_enums.h 27 Feb 2004 18:46:49 -0000      1.49
@@ -245,6 +245,17 @@
 #define EWL_ENGINE_ALL (EWL_ENGINE_SOFTWARE_X11 | EWL_ENGINE_GL_X11 | \
                        EWL_ENGINE_FB)
 
+enum Ewl_Modifiers
+{
+       EWL_KEY_MODIFIER_SHIFT = 0x1,
+       EWL_KEY_MODIFIER_CTRL = 0x2,
+       EWL_KEY_MODIFIER_ALT = 0x4,
+       EWL_KEY_MODIFIER_MOD = 0x8,
+       EWL_KEY_MODIFIER_WIN = 0x10,
+};
+
+typedef enum Ewl_Key_Modifiers Ewl_Key_Modifiers;
+
 /**
  * @}
  */
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_events.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -3 -r1.52 -r1.53
--- ewl_events.c        27 Feb 2004 00:30:58 -0000      1.52
+++ ewl_events.c        27 Feb 2004 18:46:49 -0000      1.53
@@ -12,6 +12,8 @@
 #include "Ecore_X.h"
 #endif
 
+unsigned int key_modifiers = 0;
+
 extern Ewl_Widget     *last_selected;
 extern Ewl_Widget     *last_key;
 extern Ewl_Widget     *last_focused;
@@ -110,6 +112,16 @@
        DRETURN_INT(1, DLEVEL_STABLE);
 }
 
+/**
+ * @return Returns the current mask of modifier keys.
+ * @brief Retrieve the current mask of modifiers that are set.
+ */
+unsigned int ewl_ev_get_modifiers()
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DRETURN_INT(key_modifiers, DLEVEL_STABLE);
+}
+
 #ifdef HAVE_EVAS_ENGINE_SOFTWARE_X11_H
 
 /**
@@ -238,7 +250,20 @@
        if (!embed)
                DRETURN_INT(TRUE, DLEVEL_STABLE);
 
-       ewl_embed_feed_key_down(embed, ev->keyname);
+       if (strstr(ev->keyname, "Shift_"))
+               key_modifiers |= EWL_KEY_MODIFIER_SHIFT;
+       else if (strstr(ev->keyname, "Control_"))
+               key_modifiers |= EWL_KEY_MODIFIER_CTRL;
+       else if (strstr(ev->keyname, "Alt_"))
+               key_modifiers |= EWL_KEY_MODIFIER_ALT;
+       else if (strstr(ev->keyname, "Mod_"))
+               key_modifiers |= EWL_KEY_MODIFIER_MOD;
+       else if (strstr(ev->keyname, "Super_"))
+               key_modifiers |= EWL_KEY_MODIFIER_WIN;
+       else if (strstr(ev->keyname, "Hyper_"))
+               key_modifiers |= EWL_KEY_MODIFIER_WIN;
+       else
+               ewl_embed_feed_key_down(embed, ev->key_compose, key_modifiers);
 
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
@@ -265,7 +290,20 @@
        if (!embed)
                DRETURN_INT(TRUE, DLEVEL_STABLE);
 
-       ewl_embed_feed_key_up(embed, ev->keyname);
+       if (strstr(ev->keyname, "Shift_"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_SHIFT;
+       else if (strstr(ev->keyname, "Control_"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_CTRL;
+       else if (strstr(ev->keyname, "Alt_"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_ALT;
+       else if (strstr(ev->keyname, "Mod_"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_MOD;
+       else if (strstr(ev->keyname, "Super_"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_WIN;
+       else if (strstr(ev->keyname, "Hyper_"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_WIN;
+       else
+               ewl_embed_feed_key_up(embed, ev->keyname, key_modifiers);
 
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
@@ -294,7 +332,8 @@
        if (!embed)
                DRETURN_INT(TRUE, DLEVEL_STABLE);
 
-       ewl_embed_feed_mouse_down(embed, ev->button, ev->x, ev->y);
+       ewl_embed_feed_mouse_down(embed, ev->button, ev->x, ev->y,
+                                 key_modifiers);
 
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
@@ -323,7 +362,7 @@
        if (!embed)
                DRETURN_INT(TRUE, DLEVEL_STABLE);
 
-       ewl_embed_feed_mouse_up(embed, ev->button, ev->x, ev->y);
+       ewl_embed_feed_mouse_up(embed, ev->button, ev->x, ev->y, key_modifiers);
 
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
@@ -351,7 +390,7 @@
        if (!embed)
                DRETURN_INT(TRUE, DLEVEL_STABLE);
 
-       ewl_embed_feed_mouse_move(embed, ev->x, ev->y);
+       ewl_embed_feed_mouse_move(embed, ev->x, ev->y, key_modifiers);
 
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
@@ -367,9 +406,16 @@
  */
 int ewl_ev_x_mouse_out(void *data, int type, void *e)
 {
+       Ewl_Embed      *embed;
+       Ecore_X_Event_Mouse_Out *ev = e;
+
        DENTER_FUNCTION(DLEVEL_STABLE);
 
-       ewl_embed_feed_mouse_out();
+       embed = ewl_embed_find_by_evas_window((void *)ev->win);
+       if (!embed)
+               DRETURN_INT(TRUE, DLEVEL_STABLE);
+
+       ewl_embed_feed_mouse_out(embed, ev->x, ev->y, key_modifiers);
 
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_events.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- ewl_events.h        26 Feb 2004 05:38:34 -0000      1.17
+++ ewl_events.h        27 Feb 2004 18:46:49 -0000      1.18
@@ -32,40 +32,41 @@
 
 struct Ewl_Event_Key_Down
 {
-       char *keyname;
        unsigned int modifiers;
+       char *keyname;
 };
 
 typedef struct Ewl_Event_Key_Up Ewl_Event_Key_Up;
 
 struct Ewl_Event_Key_Up
 {
-       char *keyname;
        unsigned int modifiers;
+       char *keyname;
 };
 
 typedef struct Ewl_Event_Mouse_Down Ewl_Event_Mouse_Down;
 
 struct Ewl_Event_Mouse_Down
 {
+       unsigned int modifiers;
        int button;
        int x, y;
-       unsigned int modifiers;
 };
 
 typedef struct Ewl_Event_Mouse_Up Ewl_Event_Mouse_Up;
 
 struct Ewl_Event_Mouse_Up
 {
+       unsigned int modifiers;
        int button;
        int x, y;
-       unsigned int modifiers;
 };
 
 typedef struct Ewl_Event_Mouse_Move Ewl_Event_Mouse_Move;
 
 struct Ewl_Event_Mouse_Move
 {
+       unsigned int modifiers;
        int x, y;
 };
 
@@ -73,6 +74,7 @@
 
 struct Ewl_Event_Mouse_In
 {
+       unsigned int modifiers;
        int x, y;
 };
 
@@ -80,10 +82,12 @@
 
 struct Ewl_Event_Mouse_Out
 {
+       unsigned int modifiers;
        int x, y;
 };
 
 int ewl_ev_init(void);
+unsigned int ewl_ev_get_modifiers();
 
 /**
  * @}




-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to