changeset 19412:33b4a6e12b2b draft

(svn r24315) -Fix: Make the AI settings window behave more like the other settings window by closing the query window whenever selecting a different row.
author frosch <frosch@openttd.org>
date Fri, 01 Jun 2012 15:13:34 +0000
parents 89148abbf734
children d72c54b8d36b
files src/ai/ai_gui.cpp
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/ai/ai_gui.cpp
+++ b/src/ai/ai_gui.cpp
@@ -432,15 +432,21 @@
 				const ScriptConfigItem config_item = **it;
 				if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (config_item.flags & SCRIPTCONFIG_INGAME) == 0) return;
 
+				if (this->clicked_row != num) {
+					DeleteChildWindows(WC_QUERY_STRING);
+					this->clicked_row = num;
+				}
+
 				bool bool_item = (config_item.flags & SCRIPTCONFIG_BOOLEAN) != 0;
 
 				int x = pt.x - wid->pos_x;
 				if (_current_text_dir == TD_RTL) x = wid->current_x - 1 - x;
 				x -= 4;
+
 				/* One of the arrows is clicked (or green/red rect in case of bool value) */
+				int old_val = this->ai_config->GetSetting(config_item.name);
 				if (IsInsideMM(x, 0, SETTING_BUTTON_WIDTH)) {
-					int new_val = this->ai_config->GetSetting(config_item.name);
-					int old_val = new_val;
+					int new_val = old_val;
 					if (bool_item) {
 						new_val = !new_val;
 					} else if (x >= SETTING_BUTTON_WIDTH / 2) {
@@ -464,8 +470,7 @@
 					}
 				} else if (!bool_item) {
 					/* Display a query box so users can enter a custom value. */
-					this->clicked_row = num;
-					SetDParam(0, this->ai_config->GetSetting(config_item.name));
+					SetDParam(0, old_val);
 					ShowQueryString(STR_JUST_INT, STR_CONFIG_SETTING_QUERY_CAPTION, 10, this, CS_NUMERAL, QSF_NONE);
 				}
 				this->SetDirty();