Change: Show empty string drop down entries as divider. (#11447)

This commit is contained in:
Peter Nelson 2023-11-06 22:35:01 +00:00 committed by GitHub
parent ab535c0a86
commit 136551408c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 4 deletions

View File

@ -48,10 +48,14 @@ uint DropDownListStringItem::Width() const
return GetStringBoundingBox(this->String()).width + WidgetDimensions::scaled.dropdowntext.Horizontal(); return GetStringBoundingBox(this->String()).width + WidgetDimensions::scaled.dropdowntext.Horizontal();
} }
void DropDownListStringItem::Draw(const Rect &r, bool sel, Colours) const void DropDownListStringItem::Draw(const Rect &r, bool sel, Colours bg_colour) const
{ {
Rect ir = r.Shrink(WidgetDimensions::scaled.dropdowntext); if (this->String().empty()) {
DrawString(ir.left, ir.right, r.top, this->String(), sel ? TC_WHITE : TC_BLACK); this->DropDownListItem::Draw(r, sel, bg_colour);
} else {
Rect ir = r.Shrink(WidgetDimensions::scaled.dropdowntext);
DrawString(ir.left, ir.right, r.top, this->String(), sel ? TC_WHITE : TC_BLACK);
}
} }
/** /**

View File

@ -42,7 +42,7 @@ public:
DropDownListStringItem(StringID string, int result, bool masked); DropDownListStringItem(StringID string, int result, bool masked);
DropDownListStringItem(const std::string &string, int result, bool masked); DropDownListStringItem(const std::string &string, int result, bool masked);
bool Selectable() const override { return true; } bool Selectable() const override { return !this->String().empty(); }
uint Width() const override; uint Width() const override;
void Draw(const Rect &r, bool sel, Colours bg_colour) const override; void Draw(const Rect &r, bool sel, Colours bg_colour) const override;
virtual const std::string &String() const { return this->string; } virtual const std::string &String() const { return this->string; }