Changeset - r19788:5fba5abdb946
[Not reviewed]
master
0 6 0
frosch - 12 years ago 2012-11-14 22:50:39
frosch@openttd.org
(svn r24743) -Change: Unify the behaviour of ESC in filter editboxes.
6 files changed with 30 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/network/network_content_gui.cpp
Show inline comments
 
@@ -418,6 +418,7 @@ public:
 
		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);
 

	
src/newgrf_gui.cpp
Show inline comments
 
@@ -639,6 +639,7 @@ struct NewGRFWindow : public Window, New
 
		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);
src/querystring_gui.h
Show inline comments
 
@@ -31,6 +31,11 @@ enum HandleEditBoxResult
 
 * 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 @@ struct QueryString {
 
	 * @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)
 
	{
 
	}
 

	
src/settings_gui.cpp
Show inline comments
 
@@ -2004,6 +2004,7 @@ struct GameSettingsWindow : Window {
 
		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();
src/signs_gui.cpp
Show inline comments
 
@@ -159,7 +159,7 @@ struct SignListWindow : Window, SignList
 
		/* 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 */
src/window.cpp
Show inline comments
 
@@ -2265,6 +2265,8 @@ EventState Window::HandleEditBoxKey(int 
 
	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 @@ EventState Window::HandleEditBoxKey(int 
 
		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 @@ EventState Window::HandleEditBoxKey(int 
 
			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;
 
}
 

	
0 comments (0 inline, 0 general)