summaryrefslogtreecommitdiff
path: root/misc_gui.c
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2006-08-19 09:31:22 +0000
committertruelight <truelight@openttd.org>2006-08-19 09:31:22 +0000
commitd3f2180438830f8fefc1e319276d33a914fee767 (patch)
tree99ae4703fae7e532aba0086cf644ec2230755e2e /misc_gui.c
parent9b18c11413655ef3bc1871cf84fe1a0e95a166c3 (diff)
downloadopenttd-d3f2180438830f8fefc1e319276d33a914fee767.tar.xz
(svn r5944) -Merge TGP (r5578, r5579, r5724, r5726): -Feature: filter for textboxes to only
allow certain patterns (like numbers only)
Diffstat (limited to 'misc_gui.c')
-rw-r--r--misc_gui.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/misc_gui.c b/misc_gui.c
index 77298cadb..6899c1313 100644
--- a/misc_gui.c
+++ b/misc_gui.c
@@ -897,7 +897,7 @@ void UpdateTextBufferSize(Textbuf *tb)
tb->caretxoffs = tb->width;
}
-int HandleEditBoxKey(Window *w, querystr_d *string, int wid, WindowEvent *we)
+int HandleEditBoxKey(Window *w, querystr_d *string, int wid, WindowEvent *we, CharSetFilter afilter)
{
we->keypress.cont = false;
@@ -921,11 +921,11 @@ int HandleEditBoxKey(Window *w, querystr_d *string, int wid, WindowEvent *we)
InvalidateWidget(w, wid);
break;
default:
- if (IsValidAsciiChar(we->keypress.ascii)) {
+ if (IsValidAsciiChar(we->keypress.ascii, afilter)) {
if (InsertTextBufferChar(&string->text, we->keypress.ascii))
InvalidateWidget(w, wid);
- } else { // key wasn't caught
- we->keypress.cont = true;
+ } else { // key wasn't caught. Continue only if standard entry specified
+ we->keypress.cont = (afilter == CS_ALPHANUMERAL);
}
}
@@ -1015,7 +1015,7 @@ press_ok:;
} break;
case WE_KEYPRESS: {
- switch (HandleEditBoxKey(w, &WP(w, querystr_d), 5, e)) {
+ switch (HandleEditBoxKey(w, &WP(w, querystr_d), 5, e, WP(w, querystr_d).afilter)) {
case 1: // Return
goto press_ok;
case 2: // Escape
@@ -1060,7 +1060,7 @@ static const WindowDesc _query_string_desc = {
static char _edit_str_buf[64];
static char _orig_str_buf[lengthof(_edit_str_buf)];
-void ShowQueryString(StringID str, StringID caption, uint maxlen, uint maxwidth, WindowClass window_class, WindowNumber window_number)
+void ShowQueryString(StringID str, StringID caption, uint maxlen, uint maxwidth, WindowClass window_class, WindowNumber window_number, CharSetFilter afilter)
{
Window *w;
uint realmaxlen = maxlen & ~0x1000;
@@ -1090,6 +1090,7 @@ void ShowQueryString(StringID str, StringID caption, uint maxlen, uint maxwidth,
WP(w, querystr_d).text.maxlength = realmaxlen;
WP(w, querystr_d).text.maxwidth = maxwidth;
WP(w, querystr_d).text.buf = _edit_str_buf;
+ WP(w, querystr_d).afilter = afilter;
UpdateTextBufferSize(&WP(w, querystr_d).text);
}
@@ -1358,7 +1359,7 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
}
if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
- if (HandleEditBoxKey(w, &WP(w, querystr_d), 10, e) == 1) /* Press Enter */
+ if (HandleEditBoxKey(w, &WP(w, querystr_d), 10, e, CS_ALPHANUMERAL) == 1) /* Press Enter */
HandleButtonClick(w, 12);
}
break;