Changeset - r28319:f00779c148c1
[Not reviewed]
master
0 1 0
Darragh - 6 months ago 2023-12-22 16:56:09
90960999+Darragh-Hazell@users.noreply.github.com
Fix #11442: "default" colour in group colour window is not updated when changing master colour (#11614)

Updated SelectCompanyLiveryWindow.DrawWidget method to check if a group's livery.in_use 0 bit is set, rendering the company's default colour if it has not been.
1 file changed with 4 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/company_gui.cpp
Show inline comments
 
@@ -924,9 +924,10 @@ public:
 
			y += this->line_height;
 
		};
 

	
 
		const Company *c = Company::Get((CompanyID)this->window_number);
 

	
 
		if (livery_class < LC_GROUP_RAIL) {
 
			int pos = this->vscroll->GetPosition();
 
			const Company *c = Company::Get((CompanyID)this->window_number);
 
			for (LiveryScheme scheme = LS_DEFAULT; scheme < LS_END; scheme++) {
 
				if (_livery_class[scheme] == this->livery_class && HasBit(_loaded_newgrf_features.used_liveries, scheme)) {
 
					if (pos-- > 0) continue;
 
@@ -937,8 +938,9 @@ public:
 
			uint max = static_cast<uint>(std::min<size_t>(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->groups.size()));
 
			for (uint i = this->vscroll->GetPosition(); i < max; ++i) {
 
				const Group *g = this->groups[i];
 
				const bool livery_set = HasBit(g->livery.in_use, 0);
 
				SetDParam(0, g->index);
 
				draw_livery(STR_GROUP_NAME, g->livery, this->sel == g->index, false, this->indents[i] * WidgetDimensions::scaled.hsep_indent);
 
				draw_livery(STR_GROUP_NAME, livery_set ? g->livery : c->livery[LS_DEFAULT], this->sel == g->index, livery_set, this->indents[i] * WidgetDimensions::scaled.hsep_indent);
 
			}
 
		}
 
	}
0 comments (0 inline, 0 general)