diff options
Diffstat (limited to 'src/misc_gui.cpp')
-rw-r--r-- | src/misc_gui.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index f3f8f5190..868c105a9 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -819,6 +819,20 @@ HandleEditBoxResult QueryStringBaseWindow::HandleEditBoxKey(int wid, uint16 key, this->OnOSKInput(wid); break; + case HEBR_CONFIRM: + if (this->ok_button >= 0) { + this->OnClick(Point(), this->ok_button, 1); + } + break; + + case HEBR_CANCEL: + if (this->cancel_button >= 0) { + this->OnClick(Point(), this->cancel_button, 1); + } else { + this->UnfocusFocusedWidget(); + } + break; + default: break; } return result; @@ -905,12 +919,7 @@ struct QueryStringWindow : public QueryStringBaseWindow virtual EventState OnKeyPress(uint16 key, uint16 keycode) { EventState state = ES_NOT_HANDLED; - switch (this->HandleEditBoxKey(WID_QS_TEXT, key, keycode, state)) { - default: break; - case HEBR_CONFIRM: this->OnOk(); - /* FALL THROUGH */ - case HEBR_CANCEL: delete this; break; // close window, abandon changes - } + this->HandleEditBoxKey(WID_QS_TEXT, key, keycode, state); return state; } |