changeset 12979:6266831f418a draft

(svn r17473) -Codechange: use the post destructor for destroying companies too instead of complicating the graph GUI invalidate code.
author rubidium <rubidium@openttd.org>
date Tue, 08 Sep 2009 12:27:27 +0000
parents af3281ea88c4
children bae510cf1644
files src/company_base.h src/company_cmd.cpp src/graph_gui.cpp
diffstat 3 files changed, 14 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/company_base.h
+++ b/src/company_base.h
@@ -103,6 +103,8 @@
 	{
 		return !Company::Get(index)->is_ai;
 	}
+
+	static void PostDestructor(size_t index);
 };
 
 #define FOR_ALL_COMPANIES_FROM(var, start) FOR_ALL_ITEMS_FROM(Company, company_index, var, start)
--- a/src/company_cmd.cpp
+++ b/src/company_cmd.cpp
@@ -69,8 +69,16 @@
 	if (CleaningPool()) return;
 
 	DeleteCompanyWindows(this->index);
-	InvalidateWindowData(WC_GRAPH_LEGEND, 0, this->index);
-	InvalidateWindowData(WC_PERFORMANCE_DETAIL, 0, this->index);
+}
+
+/**
+ * Invalidating some stuff after removing item from the pool.
+ * @param index index of deleted item
+ */
+void Company::PostDestructor(size_t index)
+{
+	InvalidateWindowData(WC_GRAPH_LEGEND, 0, index);
+	InvalidateWindowData(WC_PERFORMANCE_DETAIL, 0, index);
 }
 
 /**
--- a/src/graph_gui.cpp
+++ b/src/graph_gui.cpp
@@ -1198,11 +1198,11 @@
 	{
 		/* Disable the companies who are not active */
 		for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
-			this->SetWidgetDisabledState(i + PRW_COMPANY_FIRST, !Company::IsValidID(i) || i == data);
+			this->SetWidgetDisabledState(i + PRW_COMPANY_FIRST, !Company::IsValidID(i));
 		}
 
 		/* Check if the currently selected company is still active. */
-		if (this->company == data || (this->company != INVALID_COMPANY && !Company::IsValidID(this->company))) {
+		if (this->company != INVALID_COMPANY && !Company::IsValidID(this->company)) {
 			/* Raise the widget for the previous selection. */
 			this->RaiseWidget(this->company + PRW_COMPANY_FIRST);
 			this->company = INVALID_COMPANY;
@@ -1211,7 +1211,6 @@
 		if (this->company == INVALID_COMPANY) {
 			const Company *c;
 			FOR_ALL_COMPANIES(c) {
-				if (c->index == data) continue; // Ignore to-be-removed company
 				this->company = c->index;
 				break;
 			}