Mac style: draw dock widget titles and status bar without gradient
Fill with the "window" color of the palette as passed in through the style option, which takes care of active vs inactive color selection. The title bar of a docked dockwidget is a bit lighter than the main window title and unified toolbar background, but identical to the color of the title of an undocked dock widget. This is now the case for both dark mode and light modes. Also remove the gradient fill from the status bar, just fill it with the window brush. Remove the now unused helper functions for the title bar gradient. Fixes: QTBUG-92855 Pick-to: 6.7 Change-Id: Ia04c630201b288c0107567d3f459f66129693c82 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>bb10
parent
61b71ffb3b
commit
0d91cc866f
|
|
@ -162,45 +162,6 @@ QVector<QPointer<QObject> > QMacStylePrivate::scrollBars;
|
|||
|
||||
bool isDarkMode() { return QGuiApplicationPrivate::platformTheme()->colorScheme() == Qt::ColorScheme::Dark; }
|
||||
|
||||
// Title bar gradient colors for Lion were determined by inspecting PSDs exported
|
||||
// using CoreUI's CoreThemeDocument; there is no public API to retrieve them
|
||||
|
||||
static QLinearGradient titlebarGradientActive()
|
||||
{
|
||||
static QLinearGradient darkGradient = [](){
|
||||
QLinearGradient gradient;
|
||||
// FIXME: colors are chosen somewhat arbitrarily and could be fine-tuned,
|
||||
// or ideally determined by calling a native API.
|
||||
gradient.setColorAt(0, QColor(47, 47, 47));
|
||||
return gradient;
|
||||
}();
|
||||
static QLinearGradient lightGradient = [](){
|
||||
QLinearGradient gradient;
|
||||
gradient.setColorAt(0, QColor(235, 235, 235));
|
||||
gradient.setColorAt(0.5, QColor(210, 210, 210));
|
||||
gradient.setColorAt(0.75, QColor(195, 195, 195));
|
||||
gradient.setColorAt(1, QColor(180, 180, 180));
|
||||
return gradient;
|
||||
}();
|
||||
return isDarkMode() ? darkGradient : lightGradient;
|
||||
}
|
||||
|
||||
static QLinearGradient titlebarGradientInactive()
|
||||
{
|
||||
static QLinearGradient darkGradient = [](){
|
||||
QLinearGradient gradient;
|
||||
gradient.setColorAt(1, QColor(42, 42, 42));
|
||||
return gradient;
|
||||
}();
|
||||
static QLinearGradient lightGradient = [](){
|
||||
QLinearGradient gradient;
|
||||
gradient.setColorAt(0, QColor(250, 250, 250));
|
||||
gradient.setColorAt(1, QColor(225, 225, 225));
|
||||
return gradient;
|
||||
}();
|
||||
return isDarkMode() ? darkGradient : lightGradient;
|
||||
}
|
||||
|
||||
#if QT_CONFIG(tabwidget)
|
||||
/*
|
||||
Since macOS 10.14 AppKit is using transparency more extensively, especially for the
|
||||
|
|
@ -3411,17 +3372,7 @@ void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPai
|
|||
} break;
|
||||
#endif // QT_CONFIG(tabbar)
|
||||
case PE_PanelStatusBar: {
|
||||
// Fill the status bar with the titlebar gradient.
|
||||
QLinearGradient linearGrad;
|
||||
if (w ? qt_macWindowMainWindow(w->window()) : (opt->state & QStyle::State_Active)) {
|
||||
linearGrad = titlebarGradientActive();
|
||||
} else {
|
||||
linearGrad = titlebarGradientInactive();
|
||||
}
|
||||
|
||||
linearGrad.setStart(0, opt->rect.top());
|
||||
linearGrad.setFinalStop(0, opt->rect.bottom());
|
||||
p->fillRect(opt->rect, linearGrad);
|
||||
p->fillRect(opt->rect, opt->palette.window());
|
||||
|
||||
// Draw the black separator line at the top of the status bar.
|
||||
if (w ? qt_macWindowMainWindow(w->window()) : (opt->state & QStyle::State_Active))
|
||||
|
|
@ -4103,12 +4054,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
|||
}
|
||||
|
||||
// fill title bar background
|
||||
QLinearGradient linearGrad;
|
||||
linearGrad.setStart(QPointF(0, 0));
|
||||
linearGrad.setFinalStop(QPointF(0, 2 * effectiveRect.height()));
|
||||
linearGrad.setColorAt(0, opt->palette.button().color());
|
||||
linearGrad.setColorAt(1, opt->palette.dark().color());
|
||||
p->fillRect(effectiveRect, linearGrad);
|
||||
p->fillRect(effectiveRect, opt->palette.window());
|
||||
|
||||
// draw horizontal line at bottom
|
||||
p->setPen(opt->palette.dark().color());
|
||||
|
|
|
|||
Loading…
Reference in New Issue