X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fgadgets.c;h=98e46a5a2917e577e9159c9086ac4d5258190d1c;hb=5c5685a92a0ca8060018c4d035e6b37fea7e0f5a;hp=ce939a75de69cbad9d507d3a0a34f6c8cc1a422d;hpb=3370541656df96651eabc2723332e93964c28737;p=rocksndiamonds.git diff --git a/src/libgame/gadgets.c b/src/libgame/gadgets.c index ce939a75..98e46a5a 100644 --- a/src/libgame/gadgets.c +++ b/src/libgame/gadgets.c @@ -1605,6 +1605,8 @@ boolean HandleGadgets(int mx, int my, int button) if (gadget_pressed_inside_select_line) new_gi = NULL; + + StopTextInput(); } gadget_pressed = @@ -1706,6 +1708,9 @@ boolean HandleGadgets(int mx, int my, int button) if (gi->textinput.cursor_position != old_cursor_position) DrawGadget(gi, DG_PRESSED, gi->direct_draw); + + if (press_event) + StartTextInput(gi->x, gi->y, gi->width, gi->height); } else if (gi->type & GD_TYPE_TEXT_AREA && button != 0 && !motion_status) { @@ -1720,6 +1725,9 @@ boolean HandleGadgets(int mx, int my, int button) if (gi->textarea.cursor_position != old_cursor_position) DrawGadget(gi, DG_PRESSED, gi->direct_draw); + + if (press_event) + StartTextInput(gi->x, gi->y, gi->width, gi->height); } else if (gi->type & GD_TYPE_SELECTBOX && gi->selectbox.open && !keep_selectbox_open) @@ -2082,7 +2090,11 @@ boolean HandleGadgetsKeyInput(Key key) gi->type & GD_TYPE_SELECTBOX)) return FALSE; - if (key == KSYM_Return) /* valid for both text input and selectbox */ + if (key == KSYM_Escape) + { + StopTextInput(); + } + else if (key == KSYM_Return) /* valid for both text input and selectbox */ { boolean gadget_changed = ((gi->event_mask & GD_EVENT_TEXT_RETURN) != 0); @@ -2094,6 +2106,8 @@ boolean HandleGadgetsKeyInput(Key key) strcpy(gi->textinput.last_value, gi->textinput.value); else gadget_changed = FALSE; + + StopTextInput(); } else if (gi->type & GD_TYPE_SELECTBOX) {