changeset 17719:8e82fec94067 draft

(svn r22499) -Fix: don't lower the arrow buttons in the newgrf/AI parameter windows if they're clicked when disabled
author yexo <yexo@openttd.org>
date Fri, 27 May 2011 18:02:55 +0000
parents 6ef16d4870ec
children 795ca83b0ab4
files src/ai/ai_gui.cpp src/newgrf_gui.cpp
diffstat 2 files changed, 16 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/ai/ai_gui.cpp
+++ b/src/ai/ai_gui.cpp
@@ -390,6 +390,7 @@
 				/* One of the arrows is clicked (or green/red rect in case of bool value) */
 				if (IsInsideMM(x, 0, 21)) {
 					int new_val = this->ai_config->GetSetting(config_item.name);
+					int old_val = new_val;
 					if (bool_item) {
 						new_val = !new_val;
 					} else if (x >= 10) {
@@ -404,19 +405,21 @@
 						this->clicked_increase = false;
 					}
 
-					this->ai_config->SetSetting(config_item.name, new_val);
-					this->clicked_button = num;
-					this->timeout = 5;
+					if (new_val != old_val) {
+						this->ai_config->SetSetting(config_item.name, new_val);
+						this->clicked_button = num;
+						this->timeout = 5;
 
-					this->CheckDifficultyLevel();
+						this->CheckDifficultyLevel();
+
+						this->SetDirty();
+					}
 				} 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));
 					ShowQueryString(STR_JUST_INT, STR_CONFIG_SETTING_QUERY_CAPTION, 10, this, CS_NUMERAL, QSF_NONE);
 				}
-
-				this->SetDirty();
 				break;
 			}
 
--- a/src/newgrf_gui.cpp
+++ b/src/newgrf_gui.cpp
@@ -325,6 +325,7 @@
 				/* One of the arrows is clicked */
 				if (IsInsideMM(x, 0, 21)) {
 					uint32 val = par_info->GetValue(this->grf_config);
+					uint32 old_val = val;
 					if (par_info->type == PTYPE_BOOL) {
 						val = !val;
 					} else {
@@ -338,17 +339,18 @@
 							this->clicked_increase = false;
 						}
 					}
-					par_info->SetValue(this->grf_config, val);
+					if (val != old_val) {
+						par_info->SetValue(this->grf_config, val);
 
-					this->clicked_button = num;
-					this->timeout = 5;
+						this->clicked_button = num;
+						this->timeout = 5;
+						this->SetDirty();
+					}
 				} else if (par_info->type == PTYPE_UINT_ENUM && click_count >= 2) {
 					/* Display a query box so users can enter a custom value. */
 					SetDParam(0, this->grf_config->param[num]);
 					ShowQueryString(STR_JUST_INT, STR_CONFIG_SETTING_QUERY_CAPTION, 10, this, CS_NUMERAL, QSF_NONE);
 				}
-
-				this->SetDirty();
 				break;
 			}