Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src


Modified Files:
        ewl_embed.c 


Log Message:
- the embed entry can now get modifiers and will upper case things.
- seems to work for me, but there maybe issues

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_embed.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -3 -r1.48 -r1.49
--- ewl_embed.c 14 Oct 2004 01:35:51 -0000      1.48
+++ ewl_embed.c 14 Oct 2004 02:03:38 -0000      1.49
@@ -49,6 +49,8 @@
 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
@@ -251,8 +253,6 @@
        ev.modifiers = mods;
        ev.keyname = strdup(keyname);
 
-printf("down_feed: (%s) (%d)\n", ev.keyname, ev.modifiers);
-
        /*
         * If a widget has been selected then we send the keystroke to the
         * appropriate widget.
@@ -1128,7 +1128,7 @@
        Ewl_Embed *embed;
        Evas_Event_Key_Down *ev = event_info;
        unsigned int key_modifiers = 0;
-       int set_modifiers = 1;
+       char *keyname = strdup(ev->keyname);
 
        DENTER_FUNCTION(DLEVEL_STABLE);
 
@@ -1145,13 +1145,15 @@
                key_modifiers |= EWL_KEY_MODIFIER_WIN;
        else if (evas_key_modifier_is_set_get(ev->modifiers, "Hyper"))
                key_modifiers |= EWL_KEY_MODIFIER_WIN;
-       else
-               set_modifiers = 0;
 
-       if (set_modifiers)
-               ewl_ev_set_modifiers(key_modifiers);
+       ewl_ev_set_modifiers(key_modifiers);
 
-       ewl_embed_key_down_feed(embed, ev->keyname, ewl_ev_get_modifiers());
+       /* need to upper case the keyname */
+       if (key_modifiers & EWL_KEY_MODIFIER_SHIFT)
+               strupper(keyname);
+
+       ewl_embed_key_down_feed(embed, keyname, ewl_ev_get_modifiers());
+       free(keyname);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -1163,31 +1165,42 @@
        Ewl_Embed *embed;
        Evas_Event_Key_Down *ev = event_info;
        unsigned int key_modifiers = 0;
-       int set_modifiers = 1;
+       char *keyname = strdup(ev->keyname);
 
        DENTER_FUNCTION(DLEVEL_STABLE);
 
        embed = data;
-       if (evas_key_modifier_is_set_get(ev->modifiers, "Shift"))
-               key_modifiers |= EWL_KEY_MODIFIER_SHIFT;
-       else if (evas_key_modifier_is_set_get(ev->modifiers, "Alt"))
-               key_modifiers |= EWL_KEY_MODIFIER_ALT;
-       else if (evas_key_modifier_is_set_get(ev->modifiers, "Control"))
-               key_modifiers |= EWL_KEY_MODIFIER_CTRL;
-       else if (evas_key_modifier_is_set_get(ev->modifiers, "Meta"))
-               key_modifiers |= EWL_KEY_MODIFIER_MOD;
-       else if (evas_key_modifier_is_set_get(ev->modifiers, "Super"))
-               key_modifiers |= EWL_KEY_MODIFIER_WIN;
-       else if (evas_key_modifier_is_set_get(ev->modifiers, "Hyper"))
-               key_modifiers |= EWL_KEY_MODIFIER_WIN;
-       else
-               set_modifiers = 0;
+       key_modifiers = ewl_ev_get_modifiers();
+       if (!evas_key_modifier_is_set_get(ev->modifiers, "Shift"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_SHIFT;
+       else if (!evas_key_modifier_is_set_get(ev->modifiers, "Alt"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_ALT;
+       else if (!evas_key_modifier_is_set_get(ev->modifiers, "Control"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_CTRL;
+       else if (!evas_key_modifier_is_set_get(ev->modifiers, "Meta"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_MOD;
+       else if (!evas_key_modifier_is_set_get(ev->modifiers, "Super"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_WIN;
+       else if (!evas_key_modifier_is_set_get(ev->modifiers, "Hyper"))
+               key_modifiers &= ~EWL_KEY_MODIFIER_WIN;
+
+       ewl_ev_set_modifiers(key_modifiers);
+
+       /* need to upper case the keyname */
+       if (key_modifiers & EWL_KEY_MODIFIER_SHIFT) 
+               strupper(keyname);
 
-       if (set_modifiers)
-               ewl_ev_set_modifiers(key_modifiers);
-
-       ewl_embed_key_up_feed(embed, ev->keyname, ewl_ev_get_modifiers());
+       ewl_embed_key_up_feed(embed, keyname, ewl_ev_get_modifiers());
+       free(keyname);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
+static void
+strupper(char *str)
+{
+       char *i;
+       for(i = str; *i != '\0'; i++) 
+               *i = toupper(*i);
+}
+




-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to