Enlightenment CVS committal
Author : tsauerbeck
Project : e17
Module : libs/esmart
Dir : e17/libs/esmart/src/lib/esmart_text_entry
Modified Files:
esmart_text_entry.c
Log Message:
removed the KEY_UP callback, moved its code to the KEY_DOWN callback. this fixes the
problems with the 'slow' shift key people have been reporting. not sure whether there
are negative side effects of this change, though, please test.
===================================================================
RCS file:
/cvsroot/enlightenment/e17/libs/esmart/src/lib/esmart_text_entry/esmart_text_entry.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- esmart_text_entry.c 6 May 2004 14:49:12 -0000 1.2
+++ esmart_text_entry.c 8 May 2004 10:38:49 -0000 1.3
@@ -1,3 +1,7 @@
+/*
+ * vim:ts=8:sw=3
+ */
+
#include <stdio.h>
#include <string.h>
#include <Ecore.h>
@@ -185,13 +189,21 @@
static void
_key_down_cb (void *data, Evas * e, Evas_Object * o, void *ev)
{
- if (ecore_event_current_type_get () == ECORE_X_EVENT_KEY_DOWN)
- {
- Ecore_X_Event_Key_Down *evx = NULL;
+ Evas_Event_Key_Down *down = NULL;
+ Ecore_X_Event_Key_Down *evx = NULL;
+ Esmart_Text_Entry *entry = NULL;
- if ((evx = (Ecore_X_Event_Key_Down *) ecore_event_current_event_get ()))
- {
- if ((!strcmp (evx->keyname, "Control_L"))
+ if (ecore_event_current_type_get () != ECORE_X_EVENT_KEY_DOWN)
+ return;
+
+ if (!(evx = (Ecore_X_Event_Key_Down *) ecore_event_current_event_get ()))
+ return;
+
+ down = ev;
+ entry = evas_object_smart_data_get (data);
+
+ /* handle modifiers */
+ if ((!strcmp (evx->keyname, "Control_L"))
|| (!strcmp (evx->keyname, "Control_R"))
|| (!strcmp (evx->keyname, "Shift_R"))
|| (!strcmp (evx->keyname, "Shift_L"))
@@ -200,89 +212,69 @@
{
evas_key_modifier_on (e, evx->keyname);
}
- }
- }
-}
-static void
-_key_up_cb (void *data, Evas * e, Evas_Object * o, void *ev)
-{
- Evas_Event_Key_Up *up = NULL;
- Esmart_Text_Entry *entry = NULL;
-
- entry = evas_object_smart_data_get (data);
- up = (Evas_Event_Key_Up *) ev;
- if (ecore_event_current_type_get () == ECORE_X_EVENT_KEY_UP)
- {
- Ecore_X_Event_Key_Up *evx = NULL;
-
- if ((evx = (Ecore_X_Event_Key_Up *) ecore_event_current_event_get ()))
- {
- if (evas_key_modifier_is_set_get (up->modifiers, evx->keyname))
- evas_key_modifier_off (e, evx->keyname);
- else if (evas_key_modifier_is_set_get (up->modifiers, "Control_L")
- || evas_key_modifier_is_set_get (up->modifiers,
- "Control_R"))
- {
- switch ((int) evx->keyname[0])
- {
- case 117:
- esmart_text_entry_text_set (data, "");
- break;
- default:
+ if (evas_key_modifier_is_set_get (down->modifiers, evx->keyname))
+ evas_key_modifier_off (e, evx->keyname);
+ else if (evas_key_modifier_is_set_get (down->modifiers, "Control_L")
+ || evas_key_modifier_is_set_get (down->modifiers, "Control_R"))
+ {
+ switch ((int) evx->keyname[0])
+ {
+ case 117:
+ esmart_text_entry_text_set (data, "");
+ break;
+ default:
#if DEBUG
- fprintf (stderr, "(%d) is the key value\n",
- (int) evx->keyname[0]);
+ fprintf (stderr, "(%d) is the key value\n",
+ (int) evx->keyname[0]);
#endif
- break;
- }
+ break;
+ }
- }
- else if ((strlen (evx->keyname) > 1)
- && (!evx->key_compose || (strlen (evx->key_compose) > 1)))
- {
- if (!strcmp (evx->keyname, "BackSpace"))
- {
- esmart_text_entry_buffer_backspace (data);
- }
- else
- {
- fprintf (stderr, "Unknown string %s\n", evx->keyname);
- }
- }
- else
- {
- switch ((int) evx->key_compose[0])
- {
- case 127: /* Delete */
- case 9: /* Backspace */
- break;
- case 8: /* \t */
- esmart_text_entry_buffer_backspace (data);
- break;
- case 13: /* \r */
- if (entry->return_key.func)
- {
- entry->return_key.func (entry->return_key.arg,
- entry->buf.text);
+ }
+ else if ((strlen (evx->keyname) > 1)
+ && (!evx->key_compose || (strlen (evx->key_compose) > 1)))
+ {
+ if (!strcmp (evx->keyname, "BackSpace"))
+ {
+ esmart_text_entry_buffer_backspace (data);
+ }
+ else
+ {
+ fprintf (stderr, "Unknown string %s\n", evx->keyname);
+ }
+ }
+ else
+ {
+ switch ((int) evx->key_compose[0])
+ {
+ case 127: /* Delete */
+ case 9: /* Backspace */
+ break;
+ case 8: /* \t */
+ esmart_text_entry_buffer_backspace (data);
+ break;
+ case 13: /* \r */
+ if (entry->return_key.func)
+ {
+ entry->return_key.func (entry->return_key.arg,
+ entry->buf.text);
#if DEBUG
- fprintf (stderr, "Buffer Length %d\n",
- strlen (entry->buf.text));
+ fprintf (stderr, "Buffer Length %d\n",
+ strlen (entry->buf.text));
#endif
- }
- break;
- default:
- esmart_text_entry_buffer_char_append (data,
- evx->key_compose[0]);
+ }
+ break;
+ default:
+ esmart_text_entry_buffer_char_append (data,
+ evx->key_compose[0]);
#if DEBUG
- fprintf (stderr, "(%d) is the key_compose value\n",
- (int) evx->key_compose[0]);
+ fprintf (stderr, "(%d) is the key_compose value\n",
+ (int) evx->key_compose[0]);
#endif
- break;
- }
- }
- }
- }
+ break;
+ }
+ }
esmart_text_entry_text_fix (data);
}
@@ -313,8 +305,6 @@
evas_object_clip_set (entry->base, entry->clip);
evas_object_event_callback_add (entry->base, EVAS_CALLBACK_KEY_DOWN,
_key_down_cb, o);
- evas_object_event_callback_add (entry->base, EVAS_CALLBACK_KEY_UP,
- _key_up_cb, o);
evas_object_show (entry->base);
}
-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs