Fix background drawing for disabled LAYER_BOX_SELECTOR.

This commit is contained in:
Jeff Young 2023-07-17 20:30:52 +01:00
parent 29bb51560c
commit 19073b3e61
2 changed files with 30 additions and 0 deletions

View File

@ -26,10 +26,12 @@
#include <wx/dcmemory.h>
#include <wx/odcombo.h>
#include <wx/menuitem.h>
#include <wx/settings.h>
#include <gal/dpi_scaling.h>
#include <layer_ids.h>
#include <widgets/layer_box_selector.h>
#include "kiplatform/ui.h"
LAYER_SELECTOR::LAYER_SELECTOR()
@ -164,3 +166,29 @@ void LAYER_BOX_SELECTOR::onKeyDown( wxKeyEvent& aEvent )
aEvent.Skip();
}
void LAYER_BOX_SELECTOR::OnDrawBackground( wxDC& dc, const wxRect& rect, int item, int flags) const
{
#ifndef __WXMSW__
if( ( flags & wxODCB_PAINTING_CONTROL ) && !IsEnabled() )
{
wxColour fgCol = wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT );
wxColour bgCol = wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE );
if( KIPLATFORM::UI::IsDarkTheme() )
bgCol = bgCol.ChangeLightness( 106 );
else
bgCol = bgCol.ChangeLightness( 160 );
dc.SetTextForeground( fgCol );
dc.SetBrush( bgCol );
dc.SetPen( bgCol );
dc.DrawRectangle( rect.Inflate( 1, 1 ) );
dc.SetClippingRegion( rect );
return;
}
#endif
wxBitmapComboBox::OnDrawBackground( dc, rect, item, flags );
}

View File

@ -91,6 +91,8 @@ public:
private:
void onKeyDown( wxKeyEvent& aEvent );
void OnDrawBackground( wxDC& dc, const wxRect& rect, int item, int flags) const override;
};
#endif // LAYER_BOX_SELECTOR_H