Dim the icon on ComboBox when disabled

This commit is contained in:
Ocraftyone 2023-11-21 06:50:18 -05:00
parent 53bc949580
commit bc21ab61f5
No known key found for this signature in database
GPG key ID: 85836ED21AD4D125
3 changed files with 15 additions and 1 deletions

View file

@ -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);

View file

@ -17,6 +17,7 @@ class ComboBox : public wxWindowWithItems<TextInput, wxItemContainer>
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,

View file

@ -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);