Mercurial > hg > openttd
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; }