X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/78cffd2979a6ed87e044fcb024cf4fdfc5c7cb3d..245ae05f8016c2cbf8cd877ca9ddf5d57ed236d9:/src/selectionmode/backgroundcolorhelper.cpp diff --git a/src/selectionmode/backgroundcolorhelper.cpp b/src/selectionmode/backgroundcolorhelper.cpp index fc5403152..42ccb64bd 100644 --- a/src/selectionmode/backgroundcolorhelper.cpp +++ b/src/selectionmode/backgroundcolorhelper.cpp @@ -1,6 +1,6 @@ /* This file is part of the KDE project - SPDX-FileCopyrightText: 2022 Felix Ernst + SPDX-FileCopyrightText: 2022 Felix Ernst SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL */ @@ -11,7 +11,6 @@ #include #include -#include #include using namespace SelectionMode; @@ -24,11 +23,10 @@ BackgroundColorHelper *BackgroundColorHelper::instance() return s_instance; } - void setBackgroundColorForWidget(QWidget *widget, QColor color) { QPalette palette; - palette.setBrush(QPalette::Active, QPalette::Window, color); + palette.setBrush(QPalette::Active, QPalette::Window, color); palette.setBrush(QPalette::Inactive, QPalette::Window, color); palette.setBrush(QPalette::Disabled, QPalette::Window, color); widget->setAutoFillBackground(true); @@ -39,15 +37,25 @@ void BackgroundColorHelper::controlBackgroundColor(QWidget *widget) { setBackgroundColorForWidget(widget, m_backgroundColor); - Q_ASSERT_X(std::find(m_colorControlledWidgets.begin(), m_colorControlledWidgets.end(), widget) == m_colorControlledWidgets.end(), "controlBackgroundColor", + Q_ASSERT_X(std::find(m_colorControlledWidgets.begin(), m_colorControlledWidgets.end(), widget) == m_colorControlledWidgets.end(), + "controlBackgroundColor", "Duplicate insertion is not necessary because the background color should already automatically update itself on paletteChanged"); m_colorControlledWidgets.emplace_back(widget); } +bool BackgroundColorHelper::eventFilter(QObject *obj, QEvent *event) +{ + Q_UNUSED(obj); + if (event->type() == QEvent::ApplicationPaletteChange) { + slotPaletteChanged(); + } + return false; +} + BackgroundColorHelper::BackgroundColorHelper() { updateBackgroundColor(); - QObject::connect(qApp, &QGuiApplication::paletteChanged, [=](){ slotPaletteChanged(); }); + qApp->installEventFilter(this); } void BackgroundColorHelper::slotPaletteChanged() @@ -57,7 +65,7 @@ void BackgroundColorHelper::slotPaletteChanged() while (!*i) { i = m_colorControlledWidgets.erase(i); if (i == m_colorControlledWidgets.end()) { - break; + return; } } setBackgroundColorForWidget(*i, m_backgroundColor); @@ -78,9 +86,7 @@ void BackgroundColorHelper::updateBackgroundColor() if (std::abs(hueDifference) > 80) { newHue = (activeBackgroundColor.hue() + positiveBackgroundColor.hue()) / 2; } else { - newHue = hueDifference > 0 ? - activeBackgroundColor.hue() + 40 : - activeBackgroundColor.hue() - 40; + newHue = hueDifference > 0 ? activeBackgroundColor.hue() + 40 : activeBackgroundColor.hue() - 40; newHue %= 360; // hue needs to be between 0 and 359 per Qt documentation. } @@ -93,3 +99,5 @@ void BackgroundColorHelper::updateBackgroundColor() } BackgroundColorHelper *BackgroundColorHelper::s_instance = nullptr; + +#include "moc_backgroundcolorhelper.cpp"