summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-09-08 12:27:27 +0000
committerrubidium <rubidium@openttd.org>2009-09-08 12:27:27 +0000
commit472ed0dc76894928570e8a04d79c7d22b5fdca15 (patch)
treebbe73d07fa4cfe6db2ebfb949a68d44db87a554a /src
parent535f71fc13ced5ed1f68886fcd5aebb47d35f53c (diff)
downloadopenttd-472ed0dc76894928570e8a04d79c7d22b5fdca15.tar.xz
(svn r17473) -Codechange: use the post destructor for destroying companies too instead of complicating the graph GUI invalidate code.
Diffstat (limited to 'src')
-rw-r--r--src/company_base.h2
-rw-r--r--src/company_cmd.cpp12
-rw-r--r--src/graph_gui.cpp5
3 files changed, 14 insertions, 5 deletions
diff --git a/src/company_base.h b/src/company_base.h
index 61aaae3c1..919ad772a 100644
--- a/src/company_base.h
+++ b/src/company_base.h
@@ -103,6 +103,8 @@ struct Company : CompanyPool::PoolItem<&_company_pool> {
{
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)
diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp
index e85caca4c..e80599b62 100644
--- a/src/company_cmd.cpp
+++ b/src/company_cmd.cpp
@@ -69,8 +69,16 @@ Company::~Company()
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);
}
/**
diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp
index 8ba32105d..a77a44460 100644
--- a/src/graph_gui.cpp
+++ b/src/graph_gui.cpp
@@ -1198,11 +1198,11 @@ struct PerformanceRatingDetailWindow : Window {
{
/* 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 @@ struct PerformanceRatingDetailWindow : Window {
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;
}