diff --git a/src/slic3r/GUI/Widgets/ComboBox.cpp b/src/slic3r/GUI/Widgets/ComboBox.cpp index a3b3894585..23f59126a1 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.cpp +++ b/src/slic3r/GUI/Widgets/ComboBox.cpp @@ -98,6 +98,13 @@ void ComboBox::Rescale() drop.Rescale(); } +bool ComboBox::Enable(bool enable) { + bool ret = TextInput::Enable(enable); + if (ret && icons[drop.selection].IsOk()) + SetIcon(icons[drop.selection]); + return ret; +} + wxString ComboBox::GetValue() const { return drop.GetSelection() >= 0 ? drop.GetValue() : GetLabel(); @@ -145,6 +152,10 @@ bool ComboBox::SetFont(wxFont const& font) return TextInput::SetFont(font); } +void ComboBox::SetIcon(const wxBitmapBundle &icon) { + TextInput::SetIcon(m_isEnabled ? icon : icon.GetBitmapFor(this).ConvertToDisabled(128)); +} + int ComboBox::Append(const wxString &item, const wxBitmapBundle &bitmap) { return Append(item, bitmap, nullptr); diff --git a/src/slic3r/GUI/Widgets/ComboBox.hpp b/src/slic3r/GUI/Widgets/ComboBox.hpp index 0e58533cb8..f3d3b2a1e3 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.hpp +++ b/src/slic3r/GUI/Widgets/ComboBox.hpp @@ -17,6 +17,7 @@ class ComboBox : public wxWindowWithItems DropDown drop; bool drop_down = false; bool text_off = false; + bool m_is_enabled = true; public: ComboBox(wxWindow * parent, @@ -62,6 +63,8 @@ public: void SetItemBitmap(unsigned int n, wxBitmapBundle const &bitmap); void ToggleDropDown(); + bool Enable(bool enable = true) override; + void SetIcon(const wxBitmapBundle &icon) override; protected: virtual int DoInsertItems(const wxArrayStringsAdapter &items, diff --git a/src/slic3r/GUI/Widgets/TextInput.hpp b/src/slic3r/GUI/Widgets/TextInput.hpp index 06cbd29a79..fdd5bbf528 100644 --- a/src/slic3r/GUI/Widgets/TextInput.hpp +++ b/src/slic3r/GUI/Widgets/TextInput.hpp @@ -40,7 +40,7 @@ public: void SetLabel(const wxString& label); - void SetIcon(const wxBitmapBundle & icon); + virtual void SetIcon(const wxBitmapBundle & icon); void SetLabelColor(StateColor const &color);