Enlightenment CVS committal Author : pfritz Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/lib Modified Files: ewl_embed.c ewl_embed.h Log Message: change key event handling of the embed add mouse wheel support to the embed =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_embed.c,v retrieving revision 1.68 retrieving revision 1.69 diff -u -3 -r1.68 -r1.69 --- ewl_embed.c 28 May 2006 00:50:28 -0000 1.68 +++ ewl_embed.c 2 Jun 2006 21:56:50 -0000 1.69 @@ -44,8 +44,6 @@ static void ewl_embed_evas_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void strupper(char *str); - /** * @return Returns a new embed on success, or NULL on failure. * @brief Allocate and initialize a new embed @@ -307,7 +305,8 @@ * @brief Sends the event for a key press into an embed. */ void -ewl_embed_key_down_feed(Ewl_Embed *embed, char *keyname, unsigned int mods) +ewl_embed_key_down_feed(Ewl_Embed *embed, const char *keyname, + unsigned int mods) { Ewl_Widget *temp; Ewl_Event_Key_Down ev; @@ -383,7 +382,8 @@ * @brief Sends the event for a key release into an embed. */ void -ewl_embed_key_up_feed(Ewl_Embed *embed, char *keyname, unsigned int mods) +ewl_embed_key_up_feed(Ewl_Embed *embed, const char *keyname, + unsigned int mods) { Ewl_Widget *temp; Ewl_Event_Key_Up ev; @@ -1942,12 +1942,21 @@ } static void -ewl_embed_evas_mouse_wheel_cb(void *data __UNUSED__, Evas *e __UNUSED__, +ewl_embed_evas_mouse_wheel_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__) + void *event_info) { + Ewl_Embed *embed; + Evas_Event_Mouse_Wheel *ev; + DENTER_FUNCTION(DLEVEL_STABLE); + ev = event_info; + embed = data; + + ewl_embed_mouse_wheel_feed(embed, ev->canvas.x, ev->canvas.y, ev->z, + ev->direction, ewl_ev_modifiers_get()); + DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -1958,13 +1967,12 @@ Ewl_Embed *embed; Evas_Event_Key_Down *ev; unsigned int key_modifiers = 0; - char *keyname; DENTER_FUNCTION(DLEVEL_STABLE); ev = event_info; - keyname = strdup(ev->keyname); embed = data; + if (evas_key_modifier_is_set(ev->modifiers, "Shift")) key_modifiers |= EWL_KEY_MODIFIER_SHIFT; else if (evas_key_modifier_is_set(ev->modifiers, "Alt")) @@ -1979,24 +1987,13 @@ key_modifiers |= EWL_KEY_MODIFIER_WIN; ewl_ev_modifiers_set(key_modifiers); - - /* fixup the space char */ - if (!strncmp(keyname, "space", 5)) { - free(keyname); - keyname = strdup(" "); - - /* fixup the return char */ - } else if (!strncmp(keyname, "Return", 6)) { - free(keyname); - keyname = strdup("\n"); - - /* fixup upper case chars */ - } else if ((key_modifiers & EWL_KEY_MODIFIER_SHIFT) - && (strlen(keyname) == 1)) - strupper(keyname); - - ewl_embed_key_down_feed(embed, keyname, ewl_ev_modifiers_get()); - free(keyname); + + if (!ev->string || iscntrl(*ev->string)) + ewl_embed_key_down_feed(embed, ev->keyname, + ewl_ev_modifiers_get()); + else + ewl_embed_key_down_feed(embed, ev->string, + ewl_ev_modifiers_get()); DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -2008,7 +2005,6 @@ Ewl_Embed *embed; Evas_Event_Key_Down *ev = event_info; unsigned int key_modifiers = 0; - char *keyname = strdup(ev->keyname); DENTER_FUNCTION(DLEVEL_STABLE); @@ -2029,39 +2025,12 @@ ewl_ev_modifiers_set(key_modifiers); - /* fixup the space char */ - if (!strncmp(keyname, "space", 5)) { - free(keyname); - keyname = strdup(" "); - - /* fixup the return char */ - } else if (!strncmp(keyname, "Return", 6)) { - free(keyname); - keyname = strdup("\n"); - - /* fixup upper case chars */ - } else if ((key_modifiers & EWL_KEY_MODIFIER_SHIFT) - && (strlen(keyname) == 1)) - strupper(keyname); - - ewl_embed_key_up_feed(embed, keyname, ewl_ev_modifiers_get()); - free(keyname); - - DLEAVE_FUNCTION(DLEVEL_STABLE); -} - -/* - * Uppercase the given string - */ -static void -strupper(char *str) -{ - DENTER_FUNCTION(DLEVEL_STABLE); - DCHECK_PARAM_PTR("str", str); - - char *i; - for(i = str; *i != '\0'; i++) - *i = toupper(*i); + if (!ev->string || iscntrl(*ev->string)) + ewl_embed_key_up_feed(embed, ev->keyname, + ewl_ev_modifiers_get()); + else + ewl_embed_key_up_feed(embed, ev->string, + ewl_ev_modifiers_get()); DLEAVE_FUNCTION(DLEVEL_STABLE); } =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_embed.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- ewl_embed.h 21 May 2006 03:51:41 -0000 1.18 +++ ewl_embed.h 2 Jun 2006 21:56:51 -0000 1.19 @@ -87,9 +87,9 @@ void ewl_embed_active_set(Ewl_Embed *embed, unsigned int act); Ewl_Embed *ewl_embed_active_embed_get(void); -void ewl_embed_key_down_feed(Ewl_Embed *embed, char *keyname, +void ewl_embed_key_down_feed(Ewl_Embed *embed, const char *keyname, unsigned int modifiers); -void ewl_embed_key_up_feed(Ewl_Embed *embed, char *keyname, +void ewl_embed_key_up_feed(Ewl_Embed *embed, const char *keyname, unsigned int modifiers); void ewl_embed_mouse_down_feed(Ewl_Embed *embed, int b, int clicks, int x, int y, unsigned int modifiers); _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs