Blame src/lib/adwaitacolors.cpp

Packit Bot 052d53
/*************************************************************************
Packit Bot 052d53
 * Copyright (C) 2014 by Hugo Pereira Da Costa <hugo.pereira@free.fr>    *
Packit Bot 052d53
 * Copyright (C) 2014-2018 Martin Bříza <m@rtinbriza.cz>                 *
Packit Bot 052d53
 * Copyright (C) 2019-2020 Jan Grulich <jgrulich@redhat.com>             *
Packit Bot 052d53
 *                                                                       *
Packit Bot 052d53
 * This program is free software; you can redistribute it and/or modify  *
Packit Bot 052d53
 * it under the terms of the GNU General Public License as published by  *
Packit Bot 052d53
 * the Free Software Foundation; either version 2 of the License, or     *
Packit Bot 052d53
 * (at your option) any later version.                                   *
Packit Bot 052d53
 *                                                                       *
Packit Bot 052d53
 * This program is distributed in the hope that it will be useful,       *
Packit Bot 052d53
 * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
Packit Bot 052d53
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
Packit Bot 052d53
 * GNU General Public License for more details.                          *
Packit Bot 052d53
 *                                                                       *
Packit Bot 052d53
 * You should have received a copy of the GNU General Public License     *
Packit Bot 052d53
 * along with this program; if not, write to the                         *
Packit Bot 052d53
 * Free Software Foundation, Inc.,                                       *
Packit Bot 052d53
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA .        *
Packit Bot 052d53
 *************************************************************************/
Packit Bot 052d53
Packit Bot 052d53
#include "adwaitacolors.h"
Packit Bot 052d53
#include "animations/adwaitaanimationdata.h"
Packit Bot 052d53
Packit Bot 052d53
#include <QGuiApplication>
Packit Bot 052d53
Packit Bot 052d53
#include <QtMath>
Packit Bot 052d53
Packit Bot 052d53
namespace Adwaita
Packit Bot 052d53
{
Packit Bot 052d53
Packit Bot 052d53
//* contrast for arrow and treeline rendering
Packit Bot 052d53
static const qreal arrowShade = 0.15;
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::alphaColor(QColor color, qreal alpha)
Packit Bot 052d53
{
Packit Bot 052d53
    if (alpha >= 0 && alpha < 1.0) {
Packit Bot 052d53
        color.setAlphaF(alpha * color.alphaF());
Packit Bot 052d53
    }
Packit Bot 052d53
    return color;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::darken(const QColor &color, qreal amount)
Packit Bot 052d53
{
Packit Bot 052d53
    qreal h, s, l, a;
Packit Bot 052d53
    color.getHslF(&h, &s, &l, &a);
Packit Bot 052d53
Packit Bot 052d53
    qreal lightness = l - amount;
Packit Bot 052d53
    if (lightness < 0) {
Packit Bot 052d53
        lightness = 0;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return QColor::fromHslF(h, s, lightness, a);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::desaturate(const QColor &color, qreal amount)
Packit Bot 052d53
{
Packit Bot 052d53
    qreal h, s, l, a;
Packit Bot 052d53
    color.getHslF(&h, &s, &l, &a);
Packit Bot 052d53
Packit Bot 052d53
    qreal saturation = s - amount;
Packit Bot 052d53
    if (saturation < 0) {
Packit Bot 052d53
        saturation = 0;
Packit Bot 052d53
    }
Packit Bot 052d53
    return QColor::fromHslF(h, saturation, l, a);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::lighten(const QColor &color, qreal amount)
Packit Bot 052d53
{
Packit Bot 052d53
    qreal h, s, l, a;
Packit Bot 052d53
    color.getHslF(&h, &s, &l, &a);
Packit Bot 052d53
Packit Bot 052d53
    qreal lightness = l + amount;
Packit Bot 052d53
    if (lightness > 1) {
Packit Bot 052d53
        lightness = 1;
Packit Bot 052d53
    }
Packit Bot 052d53
    return QColor::fromHslF(h, s, lightness, a);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::mix(const QColor &c1, const QColor &c2, qreal bias)
Packit Bot 052d53
{
Packit Bot 052d53
    auto mixQreal = [](qreal a, qreal b, qreal bias) {
Packit Bot 052d53
        return a + (b - a) * bias;
Packit Bot 052d53
    };
Packit Bot 052d53
Packit Bot 052d53
    if (bias <= 0.0) {
Packit Bot 052d53
        return c1;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    if (bias >= 1.0) {
Packit Bot 052d53
        return c2;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    if (std::isnan(bias)) {
Packit Bot 052d53
        return c1;
Packit Bot 052d53
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    qreal r = mixQreal(c1.redF(), c2.redF(), bias);
Packit Bot 052d53
    qreal g = mixQreal(c1.greenF(), c2.greenF(), bias);
Packit Bot 052d53
    qreal b = mixQreal(c1.blueF(), c2.blueF(), bias);
Packit Bot 052d53
    qreal a = mixQreal(c1.alphaF(), c2.alphaF(), bias);
Packit Bot 052d53
Packit Bot 052d53
    return QColor::fromRgbF(r, g, b, a);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::transparentize(const QColor &color, qreal amount)
Packit Bot 052d53
{
Packit Bot 052d53
    qreal h, s, l, a;
Packit Bot 052d53
    color.getHslF(&h, &s, &l, &a);
Packit Bot 052d53
Packit Bot 052d53
    qreal alpha = a - amount;
Packit Bot 052d53
    if (alpha < 0) {
Packit Bot 052d53
        alpha = 0;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return QColor::fromHslF(h, s, l, alpha);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
static bool isDarkMode()
Packit Bot 052d53
{
Packit Bot 052d53
    const QColor textColor = QGuiApplication::palette().color(QPalette::Text);
Packit Bot 052d53
    if (qSqrt(((textColor.red() * textColor.red()) * 0.299) +
Packit Bot 052d53
              ((textColor.green() * textColor.green()) * 0.587) +
Packit Bot 052d53
              ((textColor.blue() * textColor.blue()) * 0.114)) > 128) {
Packit Bot 052d53
        return true;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return false;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
static QPalette paletteAdwaita()
Packit Bot 052d53
{
Packit Bot 052d53
    QPalette palette;
Packit Bot 052d53
Packit Bot 052d53
    // Colors defined in GTK adwaita style in _colors.scss
Packit Bot 052d53
    QColor base_color = QColor("white");
Packit Bot 052d53
    QColor text_color = QColor("black");
Packit Bot 052d53
    QColor bg_color = QColor("#f6f5f4");
Packit Bot 052d53
    QColor fg_color = QColor("#2e3436");
Packit Bot 052d53
    QColor selected_bg_color = QColor("#3584e4");
Packit Bot 052d53
    QColor selected_fg_color = QColor("white");
Packit Bot 052d53
    QColor osd_text_color = QColor("white");
Packit Bot 052d53
    QColor osd_bg_color = QColor("black");
Packit Bot 052d53
    QColor shadow = Colors::transparentize(QColor("black"), 0.9);
Packit Bot 052d53
Packit Bot 052d53
    QColor backdrop_fg_color = Colors::mix(fg_color, bg_color);
Packit Bot 052d53
    QColor backdrop_base_color = Colors::darken(base_color, 0.01);
Packit Bot 052d53
    QColor backdrop_selected_fg_color = backdrop_base_color;
Packit Bot 052d53
Packit Bot 052d53
    // This is the color we use as initial color for the gradient in normal state
Packit Bot 052d53
    // Defined in _drawing.scss button(normal)
Packit Bot 052d53
    QColor button_base_color = Colors::darken(bg_color, 0.04);
Packit Bot 052d53
Packit Bot 052d53
    QColor link_color = Colors::darken(selected_bg_color, 0.1);
Packit Bot 052d53
    QColor link_visited_color = Colors::darken(selected_bg_color, 0.2);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Window,          bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::WindowText,      fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Base,            base_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::AlternateBase,   base_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::ToolTipBase,     osd_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::ToolTipText,     osd_text_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Text,            fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Button,          button_base_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::ButtonText,      fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::BrightText,      text_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Light,           Colors::lighten(button_base_color));
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Midlight,        Colors::mix(Colors::lighten(button_base_color), button_base_color));
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Mid,             Colors::mix(Colors::darken(button_base_color), button_base_color));
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Dark,            Colors::darken(button_base_color));
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Shadow,          shadow);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Highlight,       selected_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::HighlightedText, selected_fg_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Link,            link_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::LinkVisited,     link_visited_color);
Packit Bot 052d53
Packit Bot 052d53
    QColor insensitive_fg_color = Colors::mix(fg_color, bg_color);
Packit Bot 052d53
    QColor insensitive_bg_color = Colors::mix(bg_color, base_color, 0.4);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Window,          insensitive_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::WindowText,      insensitive_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Base,            base_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::AlternateBase,   base_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Text,            insensitive_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Button,          insensitive_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::ButtonText,      insensitive_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::BrightText,      text_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Light,           Colors::lighten(insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Midlight,        Colors::mix(Colors::lighten(insensitive_bg_color), insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Mid,             Colors::mix(Colors::darken(insensitive_bg_color), insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Dark,            Colors::darken(insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Shadow,          shadow);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Highlight,       selected_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::HighlightedText, selected_fg_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Link,            link_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::LinkVisited,     link_visited_color);
Packit Bot 052d53
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Window,          bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::WindowText,      backdrop_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Base,            backdrop_base_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::AlternateBase,   backdrop_base_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Text,            backdrop_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Button,          button_base_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::ButtonText,      backdrop_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::BrightText,      text_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Light,           Colors::lighten(insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Midlight,        Colors::mix(Colors::lighten(insensitive_bg_color), insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Mid,             Colors::mix(Colors::darken(insensitive_bg_color), insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Dark,            Colors::darken(insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Shadow,          shadow);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Highlight,       selected_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::HighlightedText, backdrop_selected_fg_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Link,            link_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::LinkVisited,     link_visited_color);
Packit Bot 052d53
Packit Bot 052d53
    return palette;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
// private
Packit Bot 052d53
static QPalette paletteAdwaitaDark()
Packit Bot 052d53
{
Packit Bot 052d53
    QPalette palette;
Packit Bot 052d53
Packit Bot 052d53
    // Colors defined in GTK adwaita style in _colors.scss
Packit Bot 052d53
    QColor base_color = Colors::lighten(Colors::desaturate(QColor("#241f31"), 1.0), 0.02);
Packit Bot 052d53
    QColor text_color = QColor("white");
Packit Bot 052d53
    QColor bg_color = Colors::darken(Colors::desaturate(QColor("#3d3846"), 1.0), 0.04);
Packit Bot 052d53
    QColor fg_color = QColor("#eeeeec");
Packit Bot 052d53
    QColor selected_bg_color = Colors::darken(QColor("#3584e4"), 0.2);
Packit Bot 052d53
    QColor selected_fg_color = QColor("white");
Packit Bot 052d53
    QColor osd_text_color = QColor("white");
Packit Bot 052d53
    QColor osd_bg_color = QColor("black");
Packit Bot 052d53
    QColor shadow = Colors::transparentize(QColor("black"), 0.9);
Packit Bot 052d53
Packit Bot 052d53
    QColor backdrop_fg_color = Colors::mix(fg_color, bg_color);
Packit Bot 052d53
    QColor backdrop_base_color = Colors::lighten(base_color, 0.01);
Packit Bot 052d53
    QColor backdrop_selected_fg_color = Colors::mix(text_color, backdrop_base_color, 0.2);
Packit Bot 052d53
Packit Bot 052d53
    // This is the color we use as initial color for the gradient in normal state
Packit Bot 052d53
    // Defined in _drawing.scss button(normal)
Packit Bot 052d53
    QColor button_base_color = Colors::darken(bg_color, 0.01);
Packit Bot 052d53
Packit Bot 052d53
    QColor link_color = Colors::lighten(selected_bg_color, 0.2);
Packit Bot 052d53
    QColor link_visited_color = Colors::lighten(selected_bg_color, 0.1);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Window,          bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::WindowText,      fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Base,            base_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::AlternateBase,   base_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::ToolTipBase,     osd_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::ToolTipText,     osd_text_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Text,            fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Button,          button_base_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::ButtonText,      fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::BrightText,      text_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Light,           Colors::lighten(button_base_color));
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Midlight,        Colors::mix(Colors::lighten(button_base_color), button_base_color));
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Mid,             Colors::mix(Colors::darken(button_base_color), button_base_color));
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Dark,            Colors::darken(button_base_color));
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Shadow,          shadow);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Highlight,       selected_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::HighlightedText, selected_fg_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::Link,            link_color);
Packit Bot 052d53
    palette.setColor(QPalette::All,      QPalette::LinkVisited,     link_visited_color);
Packit Bot 052d53
Packit Bot 052d53
Packit Bot 052d53
    QColor insensitive_fg_color = Colors::mix(fg_color, bg_color);
Packit Bot 052d53
    QColor insensitive_bg_color = Colors::mix(bg_color, base_color, 0.4);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Window,          insensitive_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::WindowText,      insensitive_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Base,            base_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::AlternateBase,   base_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Text,            insensitive_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Button,          insensitive_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::ButtonText,      insensitive_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::BrightText,      text_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Light,           Colors::lighten(insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Midlight,        Colors::mix(Colors::lighten(insensitive_bg_color), insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Mid,             Colors::mix(Colors::darken(insensitive_bg_color), insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Dark,            Colors::darken(insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Shadow,          shadow);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Highlight,       selected_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::HighlightedText, selected_fg_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::Link,            link_color);
Packit Bot 052d53
    palette.setColor(QPalette::Disabled, QPalette::LinkVisited,     link_visited_color);
Packit Bot 052d53
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Window,          bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::WindowText,      backdrop_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Base,            backdrop_base_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::AlternateBase,   backdrop_base_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Text,            backdrop_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Button,          button_base_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::ButtonText,      backdrop_fg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::BrightText,      text_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Light,           Colors::lighten(insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Midlight,        Colors::mix(Colors::lighten(insensitive_bg_color), insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Mid,             Colors::mix(Colors::darken(insensitive_bg_color), insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Dark,            Colors::darken(insensitive_bg_color));
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Shadow,          shadow);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Highlight,       selected_bg_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::HighlightedText, backdrop_selected_fg_color);
Packit Bot 052d53
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::Link,            link_color);
Packit Bot 052d53
    palette.setColor(QPalette::Inactive, QPalette::LinkVisited,     link_visited_color);
Packit Bot 052d53
Packit Bot 052d53
    return palette;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
// private
Packit Bot 052d53
static QPalette paletteAdwaitaHighContrast()
Packit Bot 052d53
{
Packit Bot 052d53
    QPalette palette;
Packit Bot 052d53
Packit Bot 052d53
    return palette;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QPalette Colors::disabledPalette(const QPalette &source, qreal ratio)
Packit Bot 052d53
{
Packit Bot 052d53
    QPalette copy(source);
Packit Bot 052d53
Packit Bot 052d53
    const QList<QPalette::ColorRole> roles = { QPalette::Background, QPalette::Highlight, QPalette::WindowText, QPalette::ButtonText, QPalette::Text, QPalette::Button };
Packit Bot 052d53
    foreach (const QPalette::ColorRole &role, roles) {
Packit Bot 052d53
        copy.setColor(role, Colors::mix(source.color(QPalette::Active, role), source.color(QPalette::Disabled, role), 1.0 - ratio));
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return copy;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QPalette Colors::palette(ColorVariant variant)
Packit Bot 052d53
{
Packit Bot 052d53
    if (variant == ColorVariant::Unknown) {
Packit Bot 052d53
        return isDarkMode() ? paletteAdwaitaDark() : paletteAdwaita();
Packit Bot 052d53
    } else if (variant == ColorVariant::Adwaita) {
Packit Bot 052d53
        return paletteAdwaita();
Packit Bot 052d53
    } else if (variant == ColorVariant::AdwaitaDark) {
Packit Bot 052d53
        return paletteAdwaitaDark();
Packit Bot 052d53
    } else {
Packit Bot 052d53
        // TODO
Packit Bot 052d53
        return paletteAdwaitaHighContrast();
Packit Bot 052d53
    }
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::hoverColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    return options.palette().highlight().color();
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::focusColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    return options.palette().highlight().color();
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::negativeText(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    Q_UNUSED(options)
Packit Bot 052d53
Packit Bot 052d53
    return Qt::red;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::shadowColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    return alphaColor(options.palette().color(QPalette::Shadow), 0.15);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::titleBarColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    return options.palette().color(options.active() ? QPalette::Active : QPalette::Inactive, QPalette::Window);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::titleBarTextColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    return options.palette().color(options.active() ? QPalette::Active : QPalette::Inactive, QPalette::WindowText);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::arrowOutlineColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    switch (options.colorRole()) {
Packit Bot 052d53
    case QPalette::Text:
Packit Bot 052d53
        return mix(options.palette().color(options.colorGroup(), QPalette::Text), options.palette().color(options.colorGroup(), QPalette::Base), arrowShade);
Packit Bot 052d53
    case QPalette::WindowText:
Packit Bot 052d53
        return mix(options.palette().color(options.colorGroup(), QPalette::WindowText), options.palette().color(options.colorGroup(), QPalette::Window), arrowShade);
Packit Bot 052d53
    case QPalette::ButtonText:
Packit Bot 052d53
        return mix(options.palette().color(options.colorGroup(), QPalette::ButtonText), options.palette().color(options.colorGroup(), QPalette::Button), arrowShade);
Packit Bot 052d53
    default:
Packit Bot 052d53
        return options.palette().text().color();
Packit Bot 052d53
    }
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::buttonOutlineColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    ColorVariant variant = options.colorVariant();
Packit Bot 052d53
Packit Bot 052d53
    if (variant == ColorVariant::Unknown) {
Packit Bot 052d53
        variant = isDarkMode() ? ColorVariant::AdwaitaDark : ColorVariant::Adwaita;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    if (variant == ColorVariant::AdwaitaDark) {
Packit Bot 052d53
        return darken(options.palette().color(QPalette::Window), 0.1);
Packit Bot 052d53
    } else {
Packit Bot 052d53
        return darken(options.palette().color(QPalette::Window), 0.18);
Packit Bot 052d53
    }
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::indicatorOutlineColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    bool isDisabled = options.palette().currentColorGroup() == QPalette::Disabled;
Packit Bot 052d53
    if (options.inMenu() || options.checkboxState() == CheckBoxState::CheckOff) {
Packit Bot 052d53
        ColorVariant variant = options.colorVariant();
Packit Bot 052d53
Packit Bot 052d53
        if (variant == ColorVariant::Unknown) {
Packit Bot 052d53
            variant = isDarkMode() ? ColorVariant::AdwaitaDark : ColorVariant::Adwaita;
Packit Bot 052d53
        }
Packit Bot 052d53
Packit Bot 052d53
        if (isDisabled) {
Packit Bot 052d53
            return buttonOutlineColor(options);
Packit Bot 052d53
        }
Packit Bot 052d53
Packit Bot 052d53
        if (variant == ColorVariant::AdwaitaDark) {
Packit Bot 052d53
            return darken(options.palette().color(QPalette::Window), 0.18);
Packit Bot 052d53
        } else {
Packit Bot 052d53
            return darken(options.palette().color(QPalette::Window), 0.24);
Packit Bot 052d53
        }
Packit Bot 052d53
    } else {
Packit Bot 052d53
        return options.palette().color(QPalette::Highlight);
Packit Bot 052d53
    }
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::frameOutlineColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    return inputOutlineColor(options);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::inputOutlineColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    QColor outline(buttonOutlineColor(options));
Packit Bot 052d53
Packit Bot 052d53
    // focus takes precedence over hover
Packit Bot 052d53
    if (options.animationMode() == AnimationFocus) {
Packit Bot 052d53
        outline = mix(outline, focusColor(options));
Packit Bot 052d53
    } else if (options.hasFocus()) {
Packit Bot 052d53
        outline = focusColor(options);
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return outline;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::sidePanelOutlineColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    QColor outline(options.palette().color(QPalette::Inactive, QPalette::Highlight));
Packit Bot 052d53
    QColor focus(options.palette().color(QPalette::Active, QPalette::Highlight));
Packit Bot 052d53
Packit Bot 052d53
    if (options.animationMode() == AnimationFocus) {
Packit Bot 052d53
        outline = mix(outline, focus, options.opacity());
Packit Bot 052d53
    } else if (options.hasFocus()) {
Packit Bot 052d53
        outline = focus;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return outline;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::sliderOutlineColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    QColor outline(mix(options.palette().color(QPalette::Window), options.palette().color(QPalette::Shadow), 0.5));
Packit Bot 052d53
Packit Bot 052d53
    // hover takes precedence over focus
Packit Bot 052d53
    if (options.animationMode() == AnimationHover) {
Packit Bot 052d53
        QColor hover(hoverColor(options));
Packit Bot 052d53
        QColor focus(focusColor(options));
Packit Bot 052d53
        if (options.hasFocus()) {
Packit Bot 052d53
            outline = mix(focus, hover, options.opacity());
Packit Bot 052d53
        } else {
Packit Bot 052d53
            outline = mix(outline, hover, options.opacity());
Packit Bot 052d53
        }
Packit Bot 052d53
    } else if (options.mouseOver()) {
Packit Bot 052d53
        outline = hoverColor(options);
Packit Bot 052d53
    } else if (options.animationMode() == AnimationFocus) {
Packit Bot 052d53
        QColor focus(focusColor(options));
Packit Bot 052d53
        outline = mix(outline, focus, options.opacity());
Packit Bot 052d53
    } else if (options.hasFocus()) {
Packit Bot 052d53
        outline = focusColor(options);
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return outline;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::buttonBackgroundColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    bool isDisabled = options.palette().currentColorGroup() == QPalette::Disabled;
Packit Bot 052d53
    QColor buttonBackground(options.palette().color(QPalette::Button));
Packit Bot 052d53
    QColor background(options.palette().color(QPalette::Window));
Packit Bot 052d53
Packit Bot 052d53
    ColorVariant variant = options.colorVariant();
Packit Bot 052d53
Packit Bot 052d53
    if (variant == ColorVariant::Unknown) {
Packit Bot 052d53
        variant = isDarkMode() ? ColorVariant::AdwaitaDark : ColorVariant::Adwaita;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    const bool darkMode = variant == ColorVariant::AdwaitaDark;
Packit Bot 052d53
    const QPalette &palette = options.palette();
Packit Bot 052d53
Packit Bot 052d53
    if (isDisabled && (options.animationMode() == AnimationPressed || options.sunken())) {
Packit Bot 052d53
        // Defined in drawing.css - insensitive-active button
Packit Bot 052d53
        // if($variant == 'light', Colors::darken(Colors::mix($c, $base_color, 85%), 8%), Colors::darken(Colors::mix($c, $base_color, 85%), 6%));
Packit Bot 052d53
        // FIXME: doesn't seem to be correct color
Packit Bot 052d53
        return darkMode ? Colors::darken(Colors::mix(palette.color(QPalette::Active, QPalette::Window), palette.color(QPalette::Active, QPalette::Base), 0.15), 0.06) :
Packit Bot 052d53
               Colors::darken(Colors::mix(palette.color(QPalette::Active, QPalette::Window), palette.color(QPalette::Active, QPalette::Base), 0.15), 0.08);
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    if (options.animationMode() == AnimationPressed) {
Packit Bot 052d53
        if (darkMode) {
Packit Bot 052d53
            // Active button for dark mode is Colors::darken(bg_color, 0.09)
Packit Bot 052d53
            return Colors::mix(Colors::darken(background, 0.01), Colors::darken(background, 0.09), options.opacity());
Packit Bot 052d53
        } else {
Packit Bot 052d53
            // Active button for normal mode is Colors::darken(bg_color, 0.14)
Packit Bot 052d53
            return Colors::mix(buttonBackground, Colors::darken(background, 0.14), options.opacity());
Packit Bot 052d53
        }
Packit Bot 052d53
    } else if (options.sunken()) {
Packit Bot 052d53
        if (darkMode) {
Packit Bot 052d53
            // Active button for dark mode is Colors::darken(bg_color, 0.09)
Packit Bot 052d53
            return Colors::darken(background, 0.09);
Packit Bot 052d53
        } else {
Packit Bot 052d53
            // Active button for normal mode is Colors::darken(bg_color, 0.14)
Packit Bot 052d53
            return Colors::darken(background, 0.14);
Packit Bot 052d53
        }
Packit Bot 052d53
    } else if (options.animationMode() == AnimationHover) {
Packit Bot 052d53
        if (darkMode) {
Packit Bot 052d53
            // Hovered button for dark mode is Colors::darken(bg_color, 0.01)
Packit Bot 052d53
            return Colors::mix(buttonBackground, Colors::darken(background, 0.01), options.opacity());
Packit Bot 052d53
        } else {
Packit Bot 052d53
            // Hovered button for normal mode is bg_color
Packit Bot 052d53
            return Colors::mix(buttonBackground, background, options.opacity());
Packit Bot 052d53
        }
Packit Bot 052d53
    } else if (options.mouseOver()) {
Packit Bot 052d53
        if (darkMode) {
Packit Bot 052d53
            // Hovered button for dark mode is Colors::darken(bg_color, 0.01)
Packit Bot 052d53
            return Colors::darken(background, 0.01);
Packit Bot 052d53
        } else {
Packit Bot 052d53
            // Hovered button for normal mode is bg_color
Packit Bot 052d53
            return background;
Packit Bot 052d53
        }
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return buttonBackground;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::checkBoxIndicatorColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    if (options.inMenu()) {
Packit Bot 052d53
        return options.palette().color(QPalette::Text);
Packit Bot 052d53
    } else {
Packit Bot 052d53
        if (options.active()) {
Packit Bot 052d53
            return options.palette().color(QPalette::HighlightedText);
Packit Bot 052d53
        } else {
Packit Bot 052d53
            return Colors::transparentize(options.palette().color(QPalette::ToolTipText), 0.2);
Packit Bot 052d53
        }
Packit Bot 052d53
    }
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::headerTextColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    QColor col(options.palette().color(QPalette::WindowText));
Packit Bot 052d53
Packit Bot 052d53
    if (options.state() & QStyle::State_Enabled) {
Packit Bot 052d53
        if (options.state() & QStyle::State_Sunken) {
Packit Bot 052d53
            return Colors::alphaColor(col, 0.9);
Packit Bot 052d53
        } else if (options.state() & QStyle::State_MouseOver) {
Packit Bot 052d53
            return Colors::alphaColor(col, 0.7);
Packit Bot 052d53
        }
Packit Bot 052d53
    }
Packit Bot 052d53
    return Colors::alphaColor(col, 0.5);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::indicatorBackgroundColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    ColorVariant variant = options.colorVariant();
Packit Bot 052d53
Packit Bot 052d53
    if (variant == ColorVariant::Unknown) {
Packit Bot 052d53
        variant = isDarkMode() ? ColorVariant::AdwaitaDark : ColorVariant::Adwaita;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    const QPalette &palette = options.palette();
Packit Bot 052d53
    const bool darkMode = variant == ColorVariant::AdwaitaDark;
Packit Bot 052d53
Packit Bot 052d53
    bool isDisabled = palette.currentColorGroup() == QPalette::Disabled;
Packit Bot 052d53
    QColor background(palette.color(QPalette::Window));
Packit Bot 052d53
    // Normal-alt button for dark mode is Colors::darken(bg_color, 0.03)
Packit Bot 052d53
    // Normal-alt button for normal mode is Colors::lighten(bg_color, 0.05)
Packit Bot 052d53
    QColor indicatorColor(darkMode ? Colors::darken(background, 0.03) : Colors::lighten(background, 0.05));
Packit Bot 052d53
Packit Bot 052d53
    if (options.inMenu() || options.checkboxState() == CheckOff) {
Packit Bot 052d53
        if (isDisabled) {
Packit Bot 052d53
            // Defined in drawing.css - insensitive button
Packit Bot 052d53
            // $insensitive_bg_color: Colors::mix($bg_color, $base_color, 60%);
Packit Bot 052d53
            return Colors::mix(palette.color(QPalette::Active, QPalette::Window), palette.color(QPalette::Active, QPalette::Base), 0.6);
Packit Bot 052d53
        }
Packit Bot 052d53
Packit Bot 052d53
        if (options.animationMode() == AnimationPressed) {
Packit Bot 052d53
            if (darkMode) {
Packit Bot 052d53
                // Active button for dark mode is Colors::darken(bg_color, 0.09)
Packit Bot 052d53
                return Colors::mix(background, Colors::darken(background, 0.09), options.opacity());
Packit Bot 052d53
            } else {
Packit Bot 052d53
                // Active button for normal mode is Colors::darken(bg_color, 0.14)
Packit Bot 052d53
                return Colors::mix(Colors::lighten(background, 0.0), Colors::darken(background, 0.14), options.opacity());
Packit Bot 052d53
            }
Packit Bot 052d53
        } else if (options.sunken()) {
Packit Bot 052d53
            if (darkMode) {
Packit Bot 052d53
                // Active button for dark mode is Colors::darken(bg_color, 0.09)
Packit Bot 052d53
                return Colors::darken(background, 0.09);
Packit Bot 052d53
            } else {
Packit Bot 052d53
                // Active button for normal mode is Colors::darken(bg_color, 0.14)
Packit Bot 052d53
                return Colors::darken(background, 0.14);
Packit Bot 052d53
            }
Packit Bot 052d53
        } else if (options.animationMode() == AnimationHover) {
Packit Bot 052d53
            if (darkMode) {
Packit Bot 052d53
                // Hovered-alt button for dark mode is bg_color
Packit Bot 052d53
                return Colors::mix(indicatorColor, background, options.opacity());
Packit Bot 052d53
            } else {
Packit Bot 052d53
                // Hovered-alt button for normal mode is Colors::lighten(bg_color, 0.09)
Packit Bot 052d53
                return Colors::mix(indicatorColor, Colors::lighten(background, 0.09), options.opacity());
Packit Bot 052d53
            }
Packit Bot 052d53
        } else if (options.mouseOver()) {
Packit Bot 052d53
            if (darkMode) {
Packit Bot 052d53
                // Hovered-alt button for dark mode is bg_color
Packit Bot 052d53
                return background;
Packit Bot 052d53
            } else {
Packit Bot 052d53
                // Hovered-alt button for normal mode is Colors::lighten(bg_color, 0.09)
Packit Bot 052d53
                return Colors::lighten(background, 0.09);
Packit Bot 052d53
            }
Packit Bot 052d53
        }
Packit Bot 052d53
    } else {
Packit Bot 052d53
        if (darkMode) {
Packit Bot 052d53
            return Colors::lighten(palette.color(QPalette::Highlight));
Packit Bot 052d53
        } else {
Packit Bot 052d53
            return palette.color(QPalette::Highlight);
Packit Bot 052d53
        }
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return indicatorColor;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::frameBackgroundColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    return Colors::mix(options.palette().color(options.colorGroup(), QPalette::Window), options.palette().color(options.colorGroup(), QPalette::Base), 0.3);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::scrollBarHandleColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    ColorVariant variant = options.colorVariant();
Packit Bot 052d53
Packit Bot 052d53
    if (variant == ColorVariant::Unknown) {
Packit Bot 052d53
        variant = isDarkMode() ? ColorVariant::AdwaitaDark : ColorVariant::Adwaita;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    QColor fgColor = options.palette().color(QPalette::Text);
Packit Bot 052d53
    QColor bgColor = options.palette().color(QPalette::Window);
Packit Bot 052d53
    QColor selectedBgColor = options.palette().color(QPalette::Highlight);
Packit Bot 052d53
Packit Bot 052d53
    QColor color(Colors::mix(fgColor, bgColor, 0.4));
Packit Bot 052d53
    QColor hoverColor(Colors::mix(fgColor, bgColor, 0.2));
Packit Bot 052d53
    QColor activeColor(variant == ColorVariant::AdwaitaDark ? Colors::lighten(selectedBgColor, 0.1) : Colors::darken(selectedBgColor, 0.1));
Packit Bot 052d53
Packit Bot 052d53
    // hover takes precedence over focus
Packit Bot 052d53
    if (options.animationMode() == AnimationPressed) {
Packit Bot 052d53
        if (options.mouseOver()) {
Packit Bot 052d53
            color = Colors::mix(hoverColor, activeColor, options.opacity());
Packit Bot 052d53
        } else {
Packit Bot 052d53
            color = Colors::mix(color, activeColor, options.opacity());
Packit Bot 052d53
        }
Packit Bot 052d53
    } else if (options.sunken()) {
Packit Bot 052d53
        color = activeColor;
Packit Bot 052d53
    } else if (options.animationMode() == AnimationHover) {
Packit Bot 052d53
        color = Colors::mix(color, hoverColor, options.opacity());
Packit Bot 052d53
    } else if (options.mouseOver()) {
Packit Bot 052d53
        color = hoverColor;
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return color;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::separatorColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    return buttonOutlineColor(options);
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::toolButtonColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    if (options.sunken() || (options.animationMode() != AnimationNone && options.animationMode() != AnimationHover)) {
Packit Bot 052d53
        return buttonBackgroundColor(options);
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    return Qt::transparent;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
QColor Colors::tabBarColor(const StyleOptions &options)
Packit Bot 052d53
{
Packit Bot 052d53
    QColor background(Colors::mix(options.palette().window().color(), options.palette().shadow().color(), 0.15));
Packit Bot 052d53
    if (!(options.state() & QStyle::State_Enabled)) {
Packit Bot 052d53
        background = background.lighter(115);
Packit Bot 052d53
    }
Packit Bot 052d53
Packit Bot 052d53
    if (!(options.state() & QStyle::State_Active)) {
Packit Bot 052d53
        background = background.lighter(115);
Packit Bot 052d53
    }
Packit Bot 052d53
    return background;
Packit Bot 052d53
}
Packit Bot 052d53
Packit Bot 052d53
} // namespace Adwaita