summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2012-11-13 21:47:02 +0000
committerfrosch <frosch@openttd.org>2012-11-13 21:47:02 +0000
commitc4d7c8dd427287d42374b5a83842f570642b100c (patch)
tree2f27364c8fa88537277244fade47f87bcbe4b6fd /src
parent7699a7dc06049956b90d3f41a14109ee05b97514 (diff)
downloadopenttd-c4d7c8dd427287d42374b5a83842f570642b100c.tar.xz
(svn r24733) -Codechange: Move handling of editbox keys to window class.
Diffstat (limited to 'src')
-rw-r--r--src/ai/ai_gui.cpp6
-rw-r--r--src/fios_gui.cpp5
-rw-r--r--src/genworld_gui.cpp7
-rw-r--r--src/misc_gui.cpp15
-rw-r--r--src/network/network_chat_gui.cpp8
-rw-r--r--src/network/network_content_gui.cpp8
-rw-r--r--src/network/network_gui.cpp28
-rw-r--r--src/newgrf_gui.cpp8
-rw-r--r--src/querystring_gui.h2
-rw-r--r--src/settings_gui.cpp8
-rw-r--r--src/signs_gui.cpp17
-rw-r--r--src/town_gui.cpp7
-rw-r--r--src/window.cpp9
13 files changed, 34 insertions, 94 deletions
diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp
index e4320ae17..060f6b946 100644
--- a/src/ai/ai_gui.cpp
+++ b/src/ai/ai_gui.cpp
@@ -1340,10 +1340,8 @@ struct AIDebugWindow : public QueryStringBaseWindow {
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
{
EventState state = ES_NOT_HANDLED;
- if (this->HandleEditBoxKey(WID_AID_BREAK_STR_EDIT_BOX, key, keycode, state) == HEBR_NOT_FOCUSED) {
- /* Edit boxs is not globally foused => handle hotkeys of AI Debug window. */
- int num = CheckHotkeyMatch(aidebug_hotkeys, keycode, this);
- if (num == -1) return ES_NOT_HANDLED;
+ int num = CheckHotkeyMatch(aidebug_hotkeys, keycode, this);
+ if (num != -1) {
if (this->show_break_box && num == WID_AID_BREAK_STR_EDIT_BOX) {
this->SetFocusedWidget(WID_AID_BREAK_STR_EDIT_BOX);
SetFocusedWindow(this);
diff --git a/src/fios_gui.cpp b/src/fios_gui.cpp
index a038d0654..8cf3c840a 100644
--- a/src/fios_gui.cpp
+++ b/src/fios_gui.cpp
@@ -622,10 +622,7 @@ public:
return ES_HANDLED;
}
- EventState state = ES_NOT_HANDLED;
- this->HandleEditBoxKey(WID_SL_SAVE_OSK_TITLE, key, keycode, state);
-
- return state;
+ return ES_NOT_HANDLED;
}
virtual void OnTimeout()
diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp
index 26911f309..452223062 100644
--- a/src/genworld_gui.cpp
+++ b/src/genworld_gui.cpp
@@ -694,13 +694,6 @@ struct GenerateLandscapeWindow : public QueryStringBaseWindow {
}
}
- virtual EventState OnKeyPress(uint16 key, uint16 keycode)
- {
- EventState state = ES_NOT_HANDLED;
- this->HandleEditBoxKey(WID_GL_RANDOM_EDITBOX, key, keycode, state);
- return state;
- }
-
virtual void OnOSKInput(int wid)
{
if (wid == WID_GL_RANDOM_EDITBOX) {
diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp
index 868c105a9..4d43db770 100644
--- a/src/misc_gui.cpp
+++ b/src/misc_gui.cpp
@@ -811,10 +811,10 @@ void QueryString::DrawEditBox(const Window *w, int wid) const
_cur_dpi = old_dpi;
}
-HandleEditBoxResult QueryStringBaseWindow::HandleEditBoxKey(int wid, uint16 key, uint16 keycode, EventState &state)
+EventState QueryStringBaseWindow::HandleEditBoxKey(int wid, uint16 key, uint16 keycode)
{
- HandleEditBoxResult result = this->QueryString::HandleEditBoxKey(this, wid, key, keycode, state);
- switch (result) {
+ EventState state = ES_NOT_HANDLED;
+ switch (this->QueryString::HandleEditBoxKey(this, wid, key, keycode, state)) {
case HEBR_EDITING:
this->OnOSKInput(wid);
break;
@@ -835,7 +835,7 @@ HandleEditBoxResult QueryStringBaseWindow::HandleEditBoxKey(int wid, uint16 key,
default: break;
}
- return result;
+ return state;
}
/** Class for the string query window. */
@@ -916,13 +916,6 @@ struct QueryStringWindow : public QueryStringBaseWindow
}
}
- virtual EventState OnKeyPress(uint16 key, uint16 keycode)
- {
- EventState state = ES_NOT_HANDLED;
- this->HandleEditBoxKey(WID_QS_TEXT, key, keycode, state);
- return state;
- }
-
~QueryStringWindow()
{
if (!this->handled && this->parent != NULL) {
diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp
index 0cd9c0558..af2357dc1 100644
--- a/src/network/network_chat_gui.cpp
+++ b/src/network/network_chat_gui.cpp
@@ -510,13 +510,15 @@ struct NetworkChatWindow : public QueryStringBaseWindow {
if (keycode == WKC_TAB) {
ChatTabCompletion();
state = ES_HANDLED;
- } else {
- _chat_tab_completion_active = false;
- this->HandleEditBoxKey(WID_NC_TEXTBOX, key, keycode, state);
}
return state;
}
+ virtual void OnOSKInput(int wid)
+ {
+ _chat_tab_completion_active = false;
+ }
+
/**
* Some data on this window has become invalid.
* @param data Information about the changed data.
diff --git a/src/network/network_content_gui.cpp b/src/network/network_content_gui.cpp
index 995f40ddf..2262a09fb 100644
--- a/src/network/network_content_gui.cpp
+++ b/src/network/network_content_gui.cpp
@@ -763,12 +763,8 @@ public:
}
/* FALL THROUGH, space is pressed and filter isn't focused. */
- default: {
- /* Handle editbox input */
- EventState state = ES_NOT_HANDLED;
- this->HandleEditBoxKey(WID_NCL_FILTER, key, keycode, state);
- return state;
- }
+ default:
+ return ES_NOT_HANDLED;
}
if (_network_content_client.Length() == 0) return ES_HANDLED;
diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp
index 7b4735629..a3b5726d8 100644
--- a/src/network/network_gui.cpp
+++ b/src/network/network_gui.cpp
@@ -835,14 +835,12 @@ public:
return ES_HANDLED;
}
- if (this->HandleEditBoxKey(WID_NG_CLIENT, key, keycode, state) == HEBR_NOT_FOCUSED) {
- if (this->server != NULL) {
- if (keycode == WKC_DELETE) { // Press 'delete' to remove servers
- NetworkGameListRemoveItem(this->server);
- if (this->server == this->last_joined) this->last_joined = NULL;
- this->server = NULL;
- this->list_pos = SLP_INVALID;
- }
+ if (this->server != NULL) {
+ if (keycode == WKC_DELETE) { // Press 'delete' to remove servers
+ NetworkGameListRemoveItem(this->server);
+ if (this->server == this->last_joined) this->last_joined = NULL;
+ this->server = NULL;
+ this->list_pos = SLP_INVALID;
}
}
@@ -1172,13 +1170,6 @@ struct NetworkStartServerWindow : public QueryStringBaseWindow {
this->SetDirty();
}
- virtual EventState OnKeyPress(uint16 key, uint16 keycode)
- {
- EventState state = ES_NOT_HANDLED;
- this->HandleEditBoxKey(WID_NSS_GAMENAME, key, keycode, state);
- return state;
- }
-
virtual void OnOSKInput(int wid)
{
if (wid == WID_NSS_GAMENAME) {
@@ -2151,13 +2142,6 @@ struct NetworkCompanyPasswordWindow : public QueryStringBaseWindow {
break;
}
}
-
- virtual EventState OnKeyPress(uint16 key, uint16 keycode)
- {
- EventState state = ES_NOT_HANDLED;
- this->HandleEditBoxKey(WID_NCP_PASSWORD, key, keycode, state);
- return state;
- }
};
static const NWidgetPart _nested_network_company_password_window_widgets[] = {
diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp
index 85f6e3618..4cd60a7c4 100644
--- a/src/newgrf_gui.cpp
+++ b/src/newgrf_gui.cpp
@@ -1262,12 +1262,8 @@ struct NewGRFWindow : public QueryStringBaseWindow, NewGRFScanCallback {
this->avail_pos = this->avails.Length() - 1;
break;
- default: {
- /* Handle editbox input */
- EventState state = ES_NOT_HANDLED;
- this->HandleEditBoxKey(WID_NS_FILTER, key, keycode, state);
- return state;
- }
+ default:
+ return ES_NOT_HANDLED;
}
if (this->avails.Length() == 0) this->avail_pos = -1;
diff --git a/src/querystring_gui.h b/src/querystring_gui.h
index 554d6ccb2..08f99f29d 100644
--- a/src/querystring_gui.h
+++ b/src/querystring_gui.h
@@ -78,7 +78,7 @@ struct QueryStringBaseWindow : public Window, public QueryString {
free(this->edit_str_buf);
}
- HandleEditBoxResult HandleEditBoxKey(int wid, uint16 key, uint16 keycode, EventState &state);
+ EventState HandleEditBoxKey(int wid, uint16 key, uint16 keycode);
/**
* Callback for when on input has been entered with the OSK.
diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp
index 4091bb25c..839134030 100644
--- a/src/settings_gui.cpp
+++ b/src/settings_gui.cpp
@@ -2406,14 +2406,6 @@ struct GameSettingsWindow : QueryStringBaseWindow {
this->SetWidgetDisabledState(WID_GS_COLLAPSE_ALL, all_folded);
}
- virtual EventState OnKeyPress(uint16 key, uint16 keycode)
- {
- /* Handle editbox input */
- EventState state = ES_NOT_HANDLED;
- this->HandleEditBoxKey(WID_GS_FILTER, key, keycode, state);
- return state;
- }
-
virtual void OnOSKInput(int wid)
{
if (wid == WID_GS_FILTER) {
diff --git a/src/signs_gui.cpp b/src/signs_gui.cpp
index 2e875d5f8..73d8af2b8 100644
--- a/src/signs_gui.cpp
+++ b/src/signs_gui.cpp
@@ -306,12 +306,10 @@ struct SignListWindow : QueryStringBaseWindow, SignList {
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
{
EventState state = ES_NOT_HANDLED;
- if (this->HandleEditBoxKey(WID_SIL_FILTER_TEXT, key, keycode, state) == HEBR_NOT_FOCUSED) {
- if (CheckHotkeyMatch(signlist_hotkeys, keycode, this) == SLHK_FOCUS_FILTER_BOX) {
- this->SetFocusedWidget(WID_SIL_FILTER_TEXT);
- SetFocusedWindow(this); // The user has asked to give focus to the text box, so make sure this window is focused.
- state = ES_HANDLED;
- }
+ if (CheckHotkeyMatch(signlist_hotkeys, keycode, this) == SLHK_FOCUS_FILTER_BOX) {
+ this->SetFocusedWidget(WID_SIL_FILTER_TEXT);
+ SetFocusedWindow(this); // The user has asked to give focus to the text box, so make sure this window is focused.
+ state = ES_HANDLED;
}
return state;
@@ -540,13 +538,6 @@ struct SignWindow : QueryStringBaseWindow, SignList {
break;
}
}
-
- virtual EventState OnKeyPress(uint16 key, uint16 keycode)
- {
- EventState state = ES_NOT_HANDLED;
- this->HandleEditBoxKey(WID_QES_TEXT, key, keycode, state);
- return state;
- }
};
static const NWidgetPart _nested_query_sign_edit_widgets[] = {
diff --git a/src/town_gui.cpp b/src/town_gui.cpp
index d3c759e37..dba12cac7 100644
--- a/src/town_gui.cpp
+++ b/src/town_gui.cpp
@@ -1101,13 +1101,6 @@ public:
}
}
- virtual EventState OnKeyPress(uint16 key, uint16 keycode)
- {
- EventState state = ES_NOT_HANDLED;
- this->HandleEditBoxKey(WID_TF_TOWN_NAME_EDITBOX, key, keycode, state);
- return state;
- }
-
virtual void OnPlaceObject(Point pt, TileIndex tile)
{
this->ExecuteFoundTownCommand(tile, false, STR_ERROR_CAN_T_FOUND_TOWN_HERE, CcFoundTown);
diff --git a/src/window.cpp b/src/window.cpp
index b7741be30..23db475f4 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -2263,8 +2263,13 @@ void HandleKeypress(uint32 raw_key)
/* Check if the focused window has a focused editbox */
if (EditBoxInGlobalFocus()) {
- /* All input will in this case go to the focused window */
- if (_focused_window->OnKeyPress(key, keycode) == ES_HANDLED) return;
+ /* All input will in this case go to the focused editbox */
+ if (_focused_window->window_class == WC_CONSOLE) {
+ if (_focused_window->OnKeyPress(key, keycode) == ES_HANDLED) return;
+ } else {
+ QueryStringBaseWindow *query = dynamic_cast<QueryStringBaseWindow*>(_focused_window);
+ if (query != NULL && query->HandleEditBoxKey(_focused_window->nested_focus->index, key, keycode) == ES_HANDLED) return;
+ }
}
/* Call the event, start with the uppermost window, but ignore the toolbar. */