Implement SetForegroundColour and SetBackgroundColour for wxQt

Closes https://github.com/wxWidgets/wxWidgets/pull/1373
This commit is contained in:
Graham Dawes
2019-06-28 13:13:39 +01:00
committed by Vadim Zeitlin
parent 9e35bb92c0
commit e5ba6d9393
2 changed files with 41 additions and 2 deletions

View File

@@ -347,8 +347,8 @@ void wxWindowQt::PostCreation(bool generic)
//
// Set the default color so Paint Event default handler clears the DC:
SetBackgroundColour(wxColour(GetHandle()->palette().background().color()));
SetForegroundColour(wxColour(GetHandle()->palette().foreground().color()));
wxWindowBase::SetBackgroundColour(wxColour(GetHandle()->palette().background().color()));
wxWindowBase::SetForegroundColour(wxColour(GetHandle()->palette().foreground().color()));
GetHandle()->setFont( wxWindowBase::GetFont().GetHandle() );
@@ -1078,6 +1078,42 @@ bool wxWindowQt::SetTransparent(wxByte alpha)
}
namespace
{
void wxQtChangeRoleColour(QPalette::ColorRole role,
QWidget* widget,
const wxColour& colour)
{
QPalette palette = widget->palette();
palette.setColor(role, colour.GetQColor());
widget->setPalette(palette);
}
} // anonymous namespace
bool wxWindowQt::SetBackgroundColour(const wxColour& colour)
{
if ( !wxWindowBase::SetBackgroundColour(colour) )
return false;
QWidget *widget = GetHandle();
wxQtChangeRoleColour(widget->backgroundRole(), widget, colour);
return true;
}
bool wxWindowQt::SetForegroundColour(const wxColour& colour)
{
if (!wxWindowBase::SetForegroundColour(colour))
return false;
QWidget *widget = GetHandle();
wxQtChangeRoleColour(widget->foregroundRole(), widget, colour);
return true;
}
bool wxWindowQt::QtHandlePaintEvent ( QWidget *handler, QPaintEvent *event )
{
/* If this window has scrollbars, only let wx handle the event if it is