summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/widgets/dropdown.cpp10
-rw-r--r--src/widgets/dropdown_type.h15
2 files changed, 25 insertions, 0 deletions
diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp
index 42cd28d0f..986d051d5 100644
--- a/src/widgets/dropdown.cpp
+++ b/src/widgets/dropdown.cpp
@@ -39,6 +39,16 @@ StringID DropDownListParamStringItem::String() const
return this->string;
}
+uint DropDownListCharStringItem::Width() const
+{
+ return GetStringBoundingBox(this->string).width;
+}
+
+void DropDownListCharStringItem::Draw(int x, int y, uint width, uint height, bool sel, int bg_colour) const
+{
+ DoDrawStringTruncated(this->string, x + 2, y, sel ? TC_WHITE : TC_BLACK, width);
+}
+
/**
* Delete all items of a drop down list and the list itself
* @param list List to delete.
diff --git a/src/widgets/dropdown_type.h b/src/widgets/dropdown_type.h
index 086e5717d..607799656 100644
--- a/src/widgets/dropdown_type.h
+++ b/src/widgets/dropdown_type.h
@@ -57,6 +57,21 @@ public:
};
/**
+ * List item containing a C char string.
+ */
+class DropDownListCharStringItem : public DropDownListItem {
+public:
+ const char *string;
+
+ DropDownListCharStringItem(const char *string, int result, bool masked) : DropDownListItem(result, masked), string(string) {}
+ virtual ~DropDownListCharStringItem() {}
+
+ virtual bool Selectable() const { return true; }
+ virtual uint Width() const;
+ virtual void Draw(int x, int y, uint width, uint height, bool sel, int bg_colour) const;
+};
+
+/**
* A drop down list is a collection of drop down list items.
*/
typedef std::list<DropDownListItem *> DropDownList;