From fc2b12acca38964ed91d35e3d5c4aae20d992e7f Mon Sep 17 00:00:00 2001 From: frosch Date: Tue, 13 Nov 2012 21:47:13 +0000 Subject: (svn r24735) -Codechange: Move HandleEditBoxKey to Window class. --- src/window.cpp | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) (limited to 'src/window.cpp') diff --git a/src/window.cpp b/src/window.cpp index 23db475f4..8aa932859 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -2233,6 +2233,46 @@ static bool MaybeBringWindowToFront(Window *w) return true; } +/** + * Process keypress for editbox widget. + * @param wid Editbox widget. + * @param key the Unicode value of the key. + * @param keycode the untranslated key code including shift state. + * @return #ES_HANDLED if the key press has been handled and no other + * window should receive the event. + */ +EventState Window::HandleEditBoxKey(int wid, uint16 key, uint16 keycode) +{ + EventState state = ES_NOT_HANDLED; + + QueryString *query = dynamic_cast(this); + if (query == NULL) return state; + + switch (query->HandleEditBoxKey(this, wid, key, keycode, state)) { + case HEBR_EDITING: + this->OnEditboxChanged(wid); + break; + + case HEBR_CONFIRM: + if (query->ok_button >= 0) { + this->OnClick(Point(), query->ok_button, 1); + } + break; + + case HEBR_CANCEL: + if (query->cancel_button >= 0) { + this->OnClick(Point(), query->cancel_button, 1); + } else { + this->UnfocusFocusedWidget(); + } + break; + + default: break; + } + + return state; +} + /** * Handle keyboard input. * @param raw_key Lower 8 bits contain the ASCII character, the higher 16 bits the keycode @@ -2267,8 +2307,7 @@ void HandleKeypress(uint32 raw_key) if (_focused_window->window_class == WC_CONSOLE) { if (_focused_window->OnKeyPress(key, keycode) == ES_HANDLED) return; } else { - QueryStringBaseWindow *query = dynamic_cast(_focused_window); - if (query != NULL && query->HandleEditBoxKey(_focused_window->nested_focus->index, key, keycode) == ES_HANDLED) return; + if (_focused_window->HandleEditBoxKey(_focused_window->nested_focus->index, key, keycode) == ES_HANDLED) return; } } -- cgit v1.2.3-70-g09d2