Changeset - r28218:cbae24bb0ade
[Not reviewed]
master
0 3 0
Peter Nelson - 12 months ago 2023-11-25 19:41:21
peter1138@openttd.org
Codechange: Add DropDownIcon constructor to override dimension.

This avoids the need to construct a DropDownIcon and set the dimension after.
3 files changed with 9 insertions and 18 deletions:
0 comments (0 inline, 0 general)
src/rail_gui.cpp
Show inline comments
 
@@ -2354,9 +2354,7 @@ DropDownList GetRailTypeDropDownList(boo
 
			list.push_back(std::make_unique<DropDownListStringItem>(rti->strings.replace_text, rt, !HasBit(avail_railtypes, rt)));
 
		} else {
 
			StringID str = rti->max_speed > 0 ? STR_TOOLBAR_RAILTYPE_VELOCITY : STR_JUST_STRING;
 
			auto iconitem = std::make_unique<DropDownListIconItem>(rti->gui_sprites.build_x_rail, PAL_NONE, str, rt, !HasBit(avail_railtypes, rt));
 
			iconitem->SetDimension(d);
 
			list.push_back(std::move(iconitem));
 
			list.push_back(std::make_unique<DropDownListIconItem>(d, rti->gui_sprites.build_x_rail, PAL_NONE, str, rt, !HasBit(avail_railtypes, rt)));
 
		}
 
	}
 

	
src/road_gui.cpp
Show inline comments
 
@@ -1828,9 +1828,7 @@ DropDownList GetRoadTypeDropDownList(Roa
 
			list.push_back(std::make_unique<DropDownListStringItem>(rti->strings.replace_text, rt, !HasBit(avail_roadtypes, rt)));
 
		} else {
 
			StringID str = rti->max_speed > 0 ? STR_TOOLBAR_RAILTYPE_VELOCITY : STR_JUST_STRING;
 
			auto iconitem = std::make_unique<DropDownListIconItem>(rti->gui_sprites.build_x_road, PAL_NONE, str, rt, !HasBit(avail_roadtypes, rt));
 
			iconitem->SetDimension(d);
 
			list.push_back(std::move(iconitem));
 
			list.push_back(std::make_unique<DropDownListIconItem>(d, rti->gui_sprites.build_x_road, PAL_NONE, str, rt, !HasBit(avail_roadtypes, rt)));
 
		}
 
	}
 

	
 
@@ -1869,9 +1867,7 @@ DropDownList GetScenRoadTypeDropDownList
 
		SetDParam(0, rti->strings.menu_text);
 
		SetDParam(1, rti->max_speed / 2);
 
		StringID str = rti->max_speed > 0 ? STR_TOOLBAR_RAILTYPE_VELOCITY : STR_JUST_STRING;
 
		auto item = std::make_unique<DropDownListIconItem>(rti->gui_sprites.build_x_road, PAL_NONE, str, rt, !HasBit(avail_roadtypes, rt));
 
		item->SetDimension(d);
 
		list.push_back(std::move(item));
 
		list.push_back(std::make_unique<DropDownListIconItem>(d, rti->gui_sprites.build_x_road, PAL_NONE, str, rt, !HasBit(avail_roadtypes, rt)));
 
	}
 

	
 
	if (list.empty()) {
src/widgets/dropdown_type.h
Show inline comments
 
@@ -149,6 +149,12 @@ public:
 
		this->dbounds = this->dsprite;
 
	}
 

	
 
	template <typename... Args>
 
	explicit DropDownIcon(const Dimension &dim, SpriteID sprite, PaletteID palette, Args&&... args) : TBase(std::forward<Args>(args)...), sprite(sprite), palette(palette), dbounds(dim)
 
	{
 
		this->dsprite = GetSpriteSize(this->sprite);
 
	}
 

	
 
	uint Height() const override { return std::max(this->dbounds.height, this->TBase::Height()); }
 
	uint Width() const override { return this->dbounds.width + WidgetDimensions::scaled.hsep_normal + this->TBase::Width(); }
 

	
 
@@ -159,15 +165,6 @@ public:
 
		DrawSprite(this->sprite, this->palette, CenterBounds(ir.left, ir.right, this->dsprite.width), CenterBounds(r.top, r.bottom, this->dsprite.height));
 
		this->TBase::Draw(full, r.Indent(this->dbounds.width + WidgetDimensions::scaled.hsep_normal, rtl), sel, bg_colour);
 
	}
 

	
 
	/**
 
	 * Override bounding box dimensions of sprite, to allow multiple options to have consistent spacing.
 
	 * @param dim New bounding box to assign.
 
	 */
 
	void SetDimension(const Dimension &dim)
 
	{
 
		this->dbounds = dim;
 
	}
 
};
 

	
 
/**
0 comments (0 inline, 0 general)