Changeset - r12969:5e7f0342aa53
[Not reviewed]
master
0 3 0
rubidium - 15 years ago 2009-09-08 12:27:27
rubidium@openttd.org
(svn r17473) -Codechange: use the post destructor for destroying companies too instead of complicating the graph GUI invalidate code.
3 files changed with 14 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/company_base.h
Show inline comments
 
@@ -103,6 +103,8 @@ struct Company : CompanyPool::PoolItem<&
 
	{
 
		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)
src/company_cmd.cpp
Show inline comments
 
@@ -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);
 
}
 

	
 
/**
src/graph_gui.cpp
Show inline comments
 
@@ -1198,11 +1198,11 @@ struct PerformanceRatingDetailWindow : W
 
	{
 
		/* 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 : W
 
		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;
 
			}
0 comments (0 inline, 0 general)