mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Light mode: Use the same style of scrollbar as in dark mode
Unifies the look and feel between light and dark modes and improves the contrast of the slider.
This commit is contained in:
parent
c2a525ef97
commit
053b937bc8
@ -141,10 +141,15 @@ draw_arrow(Qt::ArrowType type, QPainter *painter, const QStyleOption *option, co
|
||||
// scrollbar {{{
|
||||
void
|
||||
CalibreStyle::draw_scrollbar(const QStyleOptionSlider *scroll_bar, QPainter * painter, const QWidget * widget) const {
|
||||
bool is_dark = is_color_dark(scroll_bar->palette.color(QPalette::Window));
|
||||
bool horizontal = scroll_bar->orientation == Qt::Horizontal;
|
||||
|
||||
QColor outline = scroll_bar->palette.window().color().darker(140);
|
||||
QColor alphaOutline = outline;
|
||||
QColor alphaOutline = scroll_bar->palette.window().color();
|
||||
if (is_dark) {
|
||||
alphaOutline = alphaOutline.darker(140);
|
||||
} else {
|
||||
alphaOutline = alphaOutline.lighter(180);
|
||||
}
|
||||
alphaOutline.setAlpha(180);
|
||||
|
||||
QRect scrollBarSubLine = subControlRect(CC_ScrollBar, scroll_bar, SC_ScrollBarSubLine, widget);
|
||||
@ -158,10 +163,17 @@ CalibreStyle::draw_scrollbar(const QStyleOptionSlider *scroll_bar, QPainter * pa
|
||||
QLinearGradient gradient(rect.center().x(), rect.top(), rect.center().x(), rect.bottom());
|
||||
if (!horizontal) gradient = QLinearGradient(rect.left(), rect.center().y(), rect.right(), rect.center().y());
|
||||
QColor buttonColor = scroll_bar->palette.color(QPalette::Button);
|
||||
if (is_dark) {
|
||||
gradient.setColorAt(0, buttonColor.darker(107));
|
||||
gradient.setColorAt(0.1, buttonColor.darker(105));
|
||||
gradient.setColorAt(0.9, buttonColor.darker(105));
|
||||
gradient.setColorAt(1, buttonColor.darker(107));
|
||||
} else {
|
||||
gradient.setColorAt(0, buttonColor.darker(105));
|
||||
gradient.setColorAt(0.1, buttonColor.darker(103));
|
||||
gradient.setColorAt(0.9, buttonColor.darker(103));
|
||||
gradient.setColorAt(1, buttonColor.darker(105));
|
||||
}
|
||||
painter->save();
|
||||
painter->setPen(Qt::NoPen);
|
||||
painter->fillRect(rect, gradient);
|
||||
@ -177,11 +189,12 @@ CalibreStyle::draw_scrollbar(const QStyleOptionSlider *scroll_bar, QPainter * pa
|
||||
// Paint slider
|
||||
gradient = QLinearGradient(scrollBarSlider.center().x(), scrollBarSlider.top(), scrollBarSlider.center().x(), scrollBarSlider.bottom());
|
||||
if (!horizontal) gradient = QLinearGradient(scrollBarSlider.left(), scrollBarSlider.center().y(), scrollBarSlider.right(), scrollBarSlider.center().y());
|
||||
QColor m = scroll_bar->palette.window().color().lighter(130);
|
||||
QColor m = scroll_bar->palette.window().color();
|
||||
m = is_dark ? m.lighter(130) : m.darker(115);
|
||||
if (scroll_bar->state & State_MouseOver) {
|
||||
gradient.setColorAt(0, m.lighter()); gradient.setColorAt(1, m.lighter(175));
|
||||
gradient.setColorAt(0, is_dark ? m.lighter() : m.darker(115)); gradient.setColorAt(1, is_dark ? m.lighter(175) : m.darker(145));
|
||||
} else {
|
||||
gradient.setColorAt(0, m); gradient.setColorAt(1, m.lighter());
|
||||
gradient.setColorAt(0, m); gradient.setColorAt(1, is_dark ? m.lighter() : m.darker(135));
|
||||
}
|
||||
painter->save();
|
||||
painter->setRenderHint(QPainter::Antialiasing, true);
|
||||
@ -277,7 +290,7 @@ void CalibreStyle::drawComplexControl(ComplexControl control, const QStyleOption
|
||||
|
||||
case CC_ScrollBar: {
|
||||
const QStyleOptionSlider *scroll_bar = qstyleoption_cast<const QStyleOptionSlider *>(option);
|
||||
if (!transient_scroller && scroll_bar && is_color_dark(option->palette.color(QPalette::Window))) {
|
||||
if (!transient_scroller && scroll_bar) {
|
||||
this->draw_scrollbar(scroll_bar, painter, widget);
|
||||
return;
|
||||
}} break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user