|
|
|
|
@ -1,4 +1,4 @@
|
|
|
|
|
/* $Id: gui_entry.c,v 1.7 2013/02/27 23:50:17 steffen Exp $ */
|
|
|
|
|
/* $Id: gui_entry.c,v 1.8 2013/02/28 23:19:59 steffen Exp $ */
|
|
|
|
|
/***************************************************************************
|
|
|
|
|
* gui_entry.c
|
|
|
|
|
*
|
|
|
|
|
@ -38,6 +38,9 @@ void gui_entry_draw (GUIItem *item) {
|
|
|
|
|
GUIEntry *entry = NULL;
|
|
|
|
|
|
|
|
|
|
if (item) entry = (GUIEntry *) item->data;
|
|
|
|
|
else return;
|
|
|
|
|
|
|
|
|
|
d_printf ("draw entry: curpos:%d", entry->curpos);
|
|
|
|
|
|
|
|
|
|
ls.width = 1.0;
|
|
|
|
|
if (currentwin->focus == (void*) item)
|
|
|
|
|
@ -69,40 +72,44 @@ void gui_entry_draw (GUIItem *item) {
|
|
|
|
|
*/
|
|
|
|
|
void gui_entry_event (GUIItem *item, GUIEvent *event) {
|
|
|
|
|
char text1[GUI_TEXTLEN];
|
|
|
|
|
char text2[GUI_TEXTLEN];
|
|
|
|
|
GUIEntry *entry = NULL;
|
|
|
|
|
|
|
|
|
|
if (item) entry = (GUIEntry *) item->data;
|
|
|
|
|
|
|
|
|
|
d_printf ("gui_entry_event: %d pos: %d,%d", event->event, event->mousepos.x, event->mousepos.y);
|
|
|
|
|
d_printf ("gui_entry_event: %d pos: %d,%d key:%d", event->event, event->mousepos.x, event->mousepos.y, event->keyval);
|
|
|
|
|
|
|
|
|
|
if (event->event == EGUI_MOUSERELEASED) {
|
|
|
|
|
d_printf ("gui_entry_event set focus");
|
|
|
|
|
currentwin->focus = item;
|
|
|
|
|
}
|
|
|
|
|
if (event->event == EGUI_MOUSERELEASED) gui_set_focus (item);
|
|
|
|
|
|
|
|
|
|
else if (event->event == EGUI_KEYRELEASED) {
|
|
|
|
|
else if (event->event == EGUI_KEYCHAR) {
|
|
|
|
|
d_printf ("gui_entry_event: curpos:%d len:%d text:%s char:%x", entry->curpos, strlen (entry->text), entry->text, event->keyval);
|
|
|
|
|
if (event->keyval == 0xff08) { // backspace
|
|
|
|
|
// strncpy (text1, entry->text, entry->curpos-1);
|
|
|
|
|
// snprintf (text2, GUI_TEXTLEN, "%s%s", text1, entry->text+entry->curpos);
|
|
|
|
|
// strncpy (entry->text, text2, GUI_TEXTLEN);
|
|
|
|
|
// entry->curpos--;
|
|
|
|
|
entry->text[0] = 0;
|
|
|
|
|
entry->curpos = 0;
|
|
|
|
|
if (event->keyval == 0x08) { // backspace
|
|
|
|
|
if (entry->curpos > 0) {
|
|
|
|
|
memset (text1, 0x0, GUI_TEXTLEN);
|
|
|
|
|
memset (text2, 0x0, GUI_TEXTLEN);
|
|
|
|
|
strncpy (text1, entry->text, entry->curpos-1);
|
|
|
|
|
snprintf (text2, GUI_TEXTLEN, "%s%s", text1, entry->text+entry->curpos);
|
|
|
|
|
strncpy (entry->text, text2, GUI_TEXTLEN);
|
|
|
|
|
entry->curpos--;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
entry->text[0] = 0;
|
|
|
|
|
entry->curpos = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (event->keyval == 0xff1b) { // esc
|
|
|
|
|
else if (event->keyval == 0x1b) { // esc
|
|
|
|
|
gui_close ();
|
|
|
|
|
}
|
|
|
|
|
else if (event->keyval == 0xff0d) { // enter
|
|
|
|
|
else if (event->keyval == 0x0d) { // enter
|
|
|
|
|
if (entry->callback_enter) entry->callback_enter ();
|
|
|
|
|
}
|
|
|
|
|
else if (event->keyval == 0xff51) { // left
|
|
|
|
|
// entry->curpos--;
|
|
|
|
|
else if (event->keyval == 0x51) { // left
|
|
|
|
|
entry->curpos--;
|
|
|
|
|
}
|
|
|
|
|
else if (event->keyval == 0xff53) { // right
|
|
|
|
|
// entry->curpos++;
|
|
|
|
|
else if (event->keyval == 0x53) { // right
|
|
|
|
|
entry->curpos++;
|
|
|
|
|
}
|
|
|
|
|
else if ((event->keyval & 0xff00) == 0xff00) {
|
|
|
|
|
else if ((event->keyval & 0x00) == 0xff00) {
|
|
|
|
|
// ignore all the rest
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
|