Windows11Style: add two helper functions to avoid code duplication
Add and use the two helper functions - buttonFillBrush() returning the correct fill brush for a button - buttonLabelPen() returning the correct pen for a button Change-Id: I6ee0dbe2490ad5c875b75d13b48371b5e798c290 Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> (cherry picked from commit 436abff5cce198bb90c90e92104922373a3f99cd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
70daae20b1
commit
993fa70777
@ -836,14 +836,8 @@ void QWindows11Style::drawPrimitive(PrimitiveElement element, const QStyleOption
|
|||||||
clipRect.setLeft(rect.x() + (rect.width() - clipRect.width()) / 2.0);
|
clipRect.setLeft(rect.x() + (rect.width() - clipRect.width()) / 2.0);
|
||||||
clipRect.setWidth(clipWidth * clipRect.width());
|
clipRect.setWidth(clipWidth * clipRect.width());
|
||||||
|
|
||||||
|
|
||||||
QBrush fillBrush = (option->state & State_On || option->state & State_NoChange) ? option->palette.accent() : option->palette.window();
|
|
||||||
if (state & State_MouseOver && (option->state & State_On || option->state & State_NoChange))
|
|
||||||
fillBrush.setColor(fillBrush.color().lighter(107));
|
|
||||||
else if (state & State_MouseOver && !(option->state & State_On || option->state & State_NoChange))
|
|
||||||
fillBrush.setColor(fillBrush.color().darker(107));
|
|
||||||
painter->setPen(Qt::NoPen);
|
painter->setPen(Qt::NoPen);
|
||||||
painter->setBrush(fillBrush);
|
painter->setBrush(buttonFillBrush(option));
|
||||||
painter->drawRoundedRect(rect, secondLevelRoundingRadius, secondLevelRoundingRadius, Qt::AbsoluteSize);
|
painter->drawRoundedRect(rect, secondLevelRoundingRadius, secondLevelRoundingRadius, Qt::AbsoluteSize);
|
||||||
|
|
||||||
painter->setPen(QPen(highContrastTheme == true ? option->palette.buttonText().color() : WINUI3Colors[colorSchemeIndex][frameColorStrong]));
|
painter->setPen(QPen(highContrastTheme == true ? option->palette.buttonText().color() : WINUI3Colors[colorSchemeIndex][frameColorStrong]));
|
||||||
@ -1169,12 +1163,7 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
|
|||||||
rect.translate(shiftX, shiftY);
|
rect.translate(shiftX, shiftY);
|
||||||
painter->setFont(toolbutton->font);
|
painter->setFont(toolbutton->font);
|
||||||
const QString text = d->toolButtonElideText(toolbutton, rect, alignment);
|
const QString text = d->toolButtonElideText(toolbutton, rect, alignment);
|
||||||
if (toolbutton->state & State_Raised || toolbutton->palette.isBrushSet(QPalette::Current, QPalette::ButtonText))
|
painter->setPen(buttonLabelPen(option, colorSchemeIndex));
|
||||||
painter->setPen(QPen(toolbutton->palette.buttonText().color()));
|
|
||||||
else if (!(toolbutton->state & State_Enabled))
|
|
||||||
painter->setPen(flags & State_On ? QPen(WINUI3Colors[colorSchemeIndex][textAccentDisabled]) : QPen(toolbutton->palette.buttonText().color()));
|
|
||||||
else
|
|
||||||
painter->setPen(QPen(WINUI3Colors[colorSchemeIndex][controlTextSecondary]));
|
|
||||||
proxy()->drawItemText(painter, rect, alignment, toolbutton->palette,
|
proxy()->drawItemText(painter, rect, alignment, toolbutton->palette,
|
||||||
toolbutton->state & State_Enabled, text);
|
toolbutton->state & State_Enabled, text);
|
||||||
} else {
|
} else {
|
||||||
@ -1225,12 +1214,7 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
|
|||||||
}
|
}
|
||||||
tr.translate(shiftX, shiftY);
|
tr.translate(shiftX, shiftY);
|
||||||
const QString text = d->toolButtonElideText(toolbutton, tr, alignment);
|
const QString text = d->toolButtonElideText(toolbutton, tr, alignment);
|
||||||
if (toolbutton->state & State_Raised || toolbutton->palette.isBrushSet(QPalette::Current, QPalette::ButtonText))
|
painter->setPen(buttonLabelPen(option, colorSchemeIndex));
|
||||||
painter->setPen(QPen(toolbutton->palette.buttonText().color()));
|
|
||||||
else if (!(toolbutton->state & State_Enabled))
|
|
||||||
painter->setPen(flags & State_On ? QPen(WINUI3Colors[colorSchemeIndex][textAccentDisabled]) : QPen(toolbutton->palette.buttonText().color()));
|
|
||||||
else
|
|
||||||
painter->setPen(QPen(WINUI3Colors[colorSchemeIndex][controlTextSecondary]));
|
|
||||||
proxy()->drawItemText(painter, QStyle::visualRect(toolbutton->direction, rect, tr), alignment, toolbutton->palette,
|
proxy()->drawItemText(painter, QStyle::visualRect(toolbutton->direction, rect, tr), alignment, toolbutton->palette,
|
||||||
toolbutton->state & State_Enabled, text);
|
toolbutton->state & State_Enabled, text);
|
||||||
} else {
|
} else {
|
||||||
@ -1416,13 +1400,7 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
|
|||||||
tf |= Qt::AlignHCenter;
|
tf |= Qt::AlignHCenter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
painter->setPen(buttonLabelPen(option, colorSchemeIndex));
|
||||||
if (btn->state & State_Sunken)
|
|
||||||
painter->setPen(flags & State_On ? QPen(WINUI3Colors[colorSchemeIndex][textOnAccentSecondary]) : QPen(WINUI3Colors[colorSchemeIndex][controlTextSecondary]));
|
|
||||||
else if (!(btn->state & State_Enabled))
|
|
||||||
painter->setPen(flags & State_On ? QPen(WINUI3Colors[colorSchemeIndex][textAccentDisabled]) : QPen(btn->palette.buttonText().color()));
|
|
||||||
else
|
|
||||||
painter->setPen(flags & State_On ? QPen(WINUI3Colors[colorSchemeIndex][textOnAccentPrimary]) : QPen(btn->palette.buttonText().color()));
|
|
||||||
proxy()->drawItemText(painter, textRect, tf, option->palette,btn->state & State_Enabled, btn->text);
|
proxy()->drawItemText(painter, textRect, tf, option->palette,btn->state & State_Enabled, btn->text);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -2281,6 +2259,31 @@ void QWindows11Style::polish(QPalette& result)
|
|||||||
result.setColor(QPalette::Active, QPalette::HighlightedText, result.windowText().color());
|
result.setColor(QPalette::Active, QPalette::HighlightedText, result.windowText().color());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QBrush QWindows11Style::buttonFillBrush(const QStyleOption *option)
|
||||||
|
{
|
||||||
|
const bool isOn = (option->state & QStyle::State_On || option->state & QStyle::State_NoChange);
|
||||||
|
QBrush brush = isOn ? option->palette.accent() : option->palette.window();
|
||||||
|
if (option->state & QStyle::State_MouseOver)
|
||||||
|
brush.setColor(isOn ? brush.color().lighter(107) : brush.color().darker(107));
|
||||||
|
return brush;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPen QWindows11Style::buttonLabelPen(const QStyleOption *option, int colorSchemeIndex)
|
||||||
|
{
|
||||||
|
if (option->palette.isBrushSet(QPalette::Current, QPalette::ButtonText))
|
||||||
|
return QPen(option->palette.buttonText().color());
|
||||||
|
|
||||||
|
const bool isOn = option->state & QStyle::State_On;
|
||||||
|
if (option->state & QStyle::State_Sunken)
|
||||||
|
return QPen(isOn ? WINUI3Colors[colorSchemeIndex][textOnAccentSecondary]
|
||||||
|
: WINUI3Colors[colorSchemeIndex][controlTextSecondary]);
|
||||||
|
if (!(option->state & QStyle::State_Enabled))
|
||||||
|
return QPen(isOn ? WINUI3Colors[colorSchemeIndex][textAccentDisabled]
|
||||||
|
: option->palette.buttonText().color());
|
||||||
|
return QPen(isOn ? WINUI3Colors[colorSchemeIndex][textOnAccentPrimary]
|
||||||
|
: option->palette.buttonText().color());
|
||||||
|
}
|
||||||
|
|
||||||
#undef SET_IF_UNRESOLVED
|
#undef SET_IF_UNRESOLVED
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -51,6 +51,11 @@ public:
|
|||||||
void unpolish(QWidget *widget) override;
|
void unpolish(QWidget *widget) override;
|
||||||
protected:
|
protected:
|
||||||
QWindows11Style(QWindows11StylePrivate &dd);
|
QWindows11Style(QWindows11StylePrivate &dd);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static inline QBrush buttonFillBrush(const QStyleOption *option);
|
||||||
|
static inline QPen buttonLabelPen(const QStyleOption *option, int colorSchemeIndex);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY_MOVE(QWindows11Style)
|
Q_DISABLE_COPY_MOVE(QWindows11Style)
|
||||||
Q_DECLARE_PRIVATE(QWindows11Style)
|
Q_DECLARE_PRIVATE(QWindows11Style)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user