diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index b18ccb36e..3fd04a848 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -95,6 +95,7 @@ set(client_SRCS widgets/CComponent.cpp widgets/CGarrisonInt.cpp widgets/CreatureCostBox.cpp + widgets/ComboBox.cpp widgets/Images.cpp widgets/MiscWidgets.cpp widgets/ObjectLists.cpp @@ -253,6 +254,7 @@ set(client_HEADERS widgets/CComponent.h widgets/CGarrisonInt.h widgets/CreatureCostBox.h + widgets/ComboBox.h widgets/Images.h widgets/MiscWidgets.h widgets/ObjectLists.h diff --git a/client/widgets/ComboBox.cpp b/client/widgets/ComboBox.cpp index 3e85c0cb6..349307b5d 100644 --- a/client/widgets/ComboBox.cpp +++ b/client/widgets/ComboBox.cpp @@ -35,7 +35,8 @@ void ComboBox::DropDown::Item::updateItem(int idx, const void * _item) if(auto w = widget("labelName")) { item = _item; - w->setText(dropDown.comboBox.getItemText(idx, item)); + if(dropDown.comboBox.getItemText) + w->setText(dropDown.comboBox.getItemText(idx, item)); } } @@ -71,7 +72,8 @@ ComboBox::DropDown::DropDown(const JsonNode & config, ComboBox & _comboBox): { REGISTER_BUILDER("item", &ComboBox::DropDown::buildItem); - comboBox.onConstructItems(curItems); + if(comboBox.onConstructItems) + comboBox.onConstructItems(curItems); addCallback("sliderMove", std::bind(&ComboBox::DropDown::sliderMove, this, std::placeholders::_1)); @@ -153,11 +155,6 @@ void ComboBox::DropDown::setItem(const void * item) GH.windows().popWindows(1); } -void ComboBox::DropDown::constructItems() -{ - comboBox.onConstructItems(curItems); -} - ComboBox::ComboBox(Point position, const std::string & defName, const std::pair & help, const JsonNode & dropDownDescriptor, EShortcut key, bool playerColoredButton): CButton(position, defName, help, 0, key, playerColoredButton) { @@ -169,8 +166,9 @@ ComboBox::ComboBox(Point position, const std::string & defName, const std::pair< void ComboBox::setItem(const void * item) { - if(auto w = std::dynamic_pointer_cast(overlay)) + if(auto w = std::dynamic_pointer_cast(overlay); getItemText) addTextOverlay(getItemText(0, item), w->font, w->color); - onSetItem(item); + if(onSetItem) + onSetItem(item); } diff --git a/client/widgets/ComboBox.h b/client/widgets/ComboBox.h index 01b3bc4e3..960e717b2 100644 --- a/client/widgets/ComboBox.h +++ b/client/widgets/ComboBox.h @@ -34,7 +34,6 @@ class ComboBox : public CButton public: DropDown(const JsonNode &, ComboBox &); - void constructItems(); bool receiveEvent(const Point & position, int eventType) const override; void clickPressed(const Point & cursorPosition) override; void setItem(const void *);