Mercurial > hg > openttd
changeset 19810:c6b37b66f220 draft
(svn r24743) -Change: Unify the behaviour of ESC in filter editboxes.
author | frosch <frosch@openttd.org> |
---|---|
date | Wed, 14 Nov 2012 22:50:39 +0000 (2012-11-14) |
parents | 4df2993a99a6 |
children | db165b9880ca |
files | src/network/network_content_gui.cpp src/newgrf_gui.cpp src/querystring_gui.h src/settings_gui.cpp src/signs_gui.cpp src/window.cpp |
diffstat | 6 files changed, 30 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/network/network_content_gui.cpp +++ b/src/network/network_content_gui.cpp @@ -418,6 +418,7 @@ this->GetWidget<NWidgetStacked>(WID_NCL_SEL_ALL_UPDATE)->SetDisplayedPlane(select_all); this->querystrings[WID_NCL_FILTER] = &this->filter_editbox; + this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; this->filter_editbox.afilter = CS_ALPHANUMERAL; this->SetFocusedWidget(WID_NCL_FILTER);
--- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -639,6 +639,7 @@ this->FinishInitNested(desc, WN_GAME_OPTIONS_NEWGRF_STATE); this->querystrings[WID_NS_FILTER] = &this->filter_editbox; + this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; this->SetFocusedWidget(WID_NS_FILTER); this->avails.SetListing(this->last_sorting);
--- a/src/querystring_gui.h +++ b/src/querystring_gui.h @@ -31,6 +31,11 @@ * Data stored about a string that can be modified in the GUI */ struct QueryString { + /* Special actions when hitting ENTER or ESC. (only keyboard, not OSK) */ + static const int ACTION_NOTHING = -1; ///< Nothing. + static const int ACTION_DESELECT = -2; ///< Deselect editbox. + static const int ACTION_CLEAR = -3; ///< Clear editbox. + StringID caption; int ok_button; ///< Widget button of parent window to simulate when pressing OK in OSK. int cancel_button; ///< Widget button of parent window to simulate when pressing CANCEL in OSK. @@ -44,7 +49,7 @@ * @param size Maximum size in bytes. * @param chars Maximum size in chars. */ - QueryString(uint16 size, uint16 chars = UINT16_MAX) : ok_button(-1), cancel_button(-1), text(size, chars), orig(NULL) + QueryString(uint16 size, uint16 chars = UINT16_MAX) : ok_button(ACTION_NOTHING), cancel_button(ACTION_DESELECT), text(size, chars), orig(NULL) { }
--- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -2004,6 +2004,7 @@ this->FinishInitNested(desc, WN_GAME_OPTIONS_GAME_SETTINGS); this->querystrings[WID_GS_FILTER] = &this->filter_editbox; + this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; this->SetFocusedWidget(WID_GS_FILTER); this->InvalidateData();
--- a/src/signs_gui.cpp +++ b/src/signs_gui.cpp @@ -159,7 +159,7 @@ /* Initialize the text edit widget */ this->querystrings[WID_SIL_FILTER_TEXT] = &this->filter_editbox; this->filter_editbox.ok_button = WID_SIL_FILTER_ENTER_BTN; - this->filter_editbox.cancel_button = WID_SIL_FILTER_CLEAR_BTN; + this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR; this->filter_editbox.afilter = CS_ALPHANUMERAL; /* Initialize the filtering variables */
--- a/src/window.cpp +++ b/src/window.cpp @@ -2265,6 +2265,8 @@ QueryString *query = this->GetQueryString(wid); if (query == NULL) return state; + int action = QueryString::ACTION_NOTHING; + switch (query->HandleEditBoxKey(this, wid, key, keycode, state)) { case HEBR_EDITING: this->OnEditboxChanged(wid); @@ -2273,6 +2275,8 @@ case HEBR_CONFIRM: if (query->ok_button >= 0) { this->OnClick(Point(), query->ok_button, 1); + } else { + action = query->ok_button; } break; @@ -2280,13 +2284,28 @@ if (query->cancel_button >= 0) { this->OnClick(Point(), query->cancel_button, 1); } else { - this->UnfocusFocusedWidget(); + action = query->cancel_button; } break; default: break; } + switch (action) { + case QueryString::ACTION_DESELECT: + this->UnfocusFocusedWidget(); + break; + + case QueryString::ACTION_CLEAR: + query->text.DeleteAll(); + this->SetWidgetDirty(wid); + this->OnEditboxChanged(wid); + break; + + default: + break; + } + return state; }