Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kguiaddons for openSUSE:Factory checked in at 2022-11-15 13:17:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kguiaddons (Old) and /work/SRC/openSUSE:Factory/.kguiaddons.new.1597 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kguiaddons" Tue Nov 15 13:17:19 2022 rev:108 rq:1035393 version:5.100.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kguiaddons/kguiaddons.changes 2022-10-11 18:01:46.785719136 +0200 +++ /work/SRC/openSUSE:Factory/.kguiaddons.new.1597/kguiaddons.changes 2022-11-15 13:19:25.760318473 +0100 @@ -1,0 +2,18 @@ +Tue Nov 8 08:35:08 UTC 2022 - Christophe Giboudeaux <[email protected]> + +- Update to 5.100.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/5/5.100.0 +- Changes since 5.99.0: + * Add misisng find_dependency's for static builds + * systemclipboard: Don't signals data source cancellation (kde#460248) + * Guard the global was actually intialised + * Implement destuctor for keystate protocol implementation + * kcolorschemewatcher: make changing colour schemes work as expected on macOS + * [kcolorschemewatcher] Default to light mode, where AppsUseLightTheme isn't + set (notably Windows 8.1) + * enable automatic dark-mode switching on macOS + * Add API for system color preference reading + +------------------------------------------------------------------- Old: ---- kguiaddons-5.99.0.tar.xz kguiaddons-5.99.0.tar.xz.sig New: ---- kguiaddons-5.100.0.tar.xz kguiaddons-5.100.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kguiaddons.spec ++++++ --- /var/tmp/diff_new_pack.Cz4VSt/_old 2022-11-15 13:19:26.224318028 +0100 +++ /var/tmp/diff_new_pack.Cz4VSt/_new 2022-11-15 13:19:26.236318016 +0100 @@ -17,7 +17,7 @@ %define lname libKF5GuiAddons5 -%define _tar_path 5.99 +%define _tar_path 5.100 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) @@ -25,7 +25,7 @@ # Only needed for the package signature condition %bcond_without released Name: kguiaddons -Version: 5.99.0 +Version: 5.100.0 Release: 0 Summary: Utilities for graphical user interfaces License: LGPL-2.1-or-later @@ -42,6 +42,7 @@ BuildRequires: libQt5Gui-private-headers-devel BuildRequires: pkgconfig BuildRequires: cmake(Qt5Gui) >= 5.15.0 +BuildRequires: cmake(Qt5DBus) >= 5.15.0 BuildRequires: cmake(Qt5Test) >= 5.15.0 BuildRequires: cmake(Qt5WaylandClient) >= 5.15.0 BuildRequires: cmake(Qt5Widgets) >= 5.15.0 ++++++ kguiaddons-5.99.0.tar.xz -> kguiaddons-5.100.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/CMakeLists.txt new/kguiaddons-5.100.0/CMakeLists.txt --- old/kguiaddons-5.99.0/CMakeLists.txt 2022-10-01 15:16:36.000000000 +0200 +++ new/kguiaddons-5.100.0/CMakeLists.txt 2022-11-05 13:27:14.000000000 +0100 @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "5.99.0") # handled by release scripts +set(KF_VERSION "5.100.0") # handled by release scripts project(KGuiAddons VERSION ${KF_VERSION}) include(FeatureSummary) -find_package(ECM 5.99.0 NO_MODULE) +find_package(ECM 5.100.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -31,9 +31,13 @@ option(WITH_X11 "Build with support for KeySequenceEditor inhibiting shortcuts on X11" ON) add_feature_info(X11 ${WITH_X11} "KeySequenceEditor inhibiting shortcuts on X11") + + option(WITH_DBUS "Build with support for color scheme information via XDG portals" ON) + else() set(WITH_WAYLAND OFF) set(WITH_X11 OFF) + set(WITH_DBUS OFF) endif() set(REQUIRED_QT_VERSION 5.15.2) @@ -62,6 +66,10 @@ find_package(Wayland 1.9 REQUIRED Client) endif() +if (WITH_DBUS) + find_package(Qt${QT_MAJOR_VERSION}DBus ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE) +endif() + ecm_setup_version(PROJECT VARIABLE_PREFIX KGUIADDONS VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kguiaddons_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5GuiAddonsConfigVersion.cmake" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/KF5GuiAddonsConfig.cmake.in new/kguiaddons-5.100.0/KF5GuiAddonsConfig.cmake.in --- old/kguiaddons-5.99.0/KF5GuiAddonsConfig.cmake.in 2022-10-01 15:16:36.000000000 +0200 +++ new/kguiaddons-5.100.0/KF5GuiAddonsConfig.cmake.in 2022-11-05 13:27:14.000000000 +0100 @@ -7,6 +7,9 @@ if (NOT @BUILD_SHARED_LIBS@) if (@WITH_X11@) + find_dependency(X11) + find_dependency(XCB COMPONENTS XCB) + if (NOT TARGET Qt6::Gui) find_dependency(Qt5X11Extras @REQUIRED_QT_VERSION@) endif() @@ -16,6 +19,10 @@ find_dependency(Qt@QT_MAJOR_VERSION@WaylandClient @REQUIRED_QT_VERSION@) find_dependency(QtWaylandScanner) endif() + + if (@WITH_DBUS@) + find_dependency(Qt@QT_MAJOR_VERSION@DBus @REQUIRED_QT_VERSION@) + endif() endif() include("${CMAKE_CURRENT_LIST_DIR}/KF5GuiAddonsTargets.cmake") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/CMakeLists.txt new/kguiaddons-5.100.0/src/CMakeLists.txt --- old/kguiaddons-5.99.0/src/CMakeLists.txt 2022-10-01 15:16:36.000000000 +0200 +++ new/kguiaddons-5.100.0/src/CMakeLists.txt 2022-11-05 13:27:14.000000000 +0100 @@ -14,6 +14,8 @@ colors/kcolorutils.cpp colors/kcolorcollection.cpp colors/kcolormimedata.cpp + colors/kcolorschemewatcher.cpp + colors/kcolorschemewatcherbackend.cpp text/kdatevalidator.cpp text/kwordwrap.cpp fonts/kfontutils.cpp @@ -55,6 +57,22 @@ EXPORT KGUIADDONS ) +if(WIN32) + target_sources(KF5GuiAddons PRIVATE colors/kcolorschemewatcher_win.cpp) + target_link_libraries(KF5GuiAddons PRIVATE advapi32) +endif() + +if(APPLE) + find_library(APPKIT_LIBRARY AppKit) + target_sources(KF5GuiAddons PRIVATE colors/kcolorschemewatcher_mac.mm) + target_link_libraries(KF5GuiAddons PRIVATE ${APPKIT_LIBRARY}) +endif() + +if(WITH_DBUS) + target_sources(KF5GuiAddons PRIVATE colors/kcolorschemewatcher_xdg.cpp) + target_link_libraries(KF5GuiAddons PRIVATE Qt${QT_MAJOR_VERSION}::DBus) +endif() + if(WITH_WAYLAND) if (TARGET Qt6::WaylandClient) qt_generate_wayland_protocol_client_sources(KF5GuiAddons @@ -121,6 +139,7 @@ KColorUtils KColorCollection KColorMimeData + KColorSchemeWatcher RELATIVE colors REQUIRED_HEADERS KGuiAddons_HEADERS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher.cpp new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher.cpp --- old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher.cpp 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,60 @@ +/* + * SPDX-FileCopyrightText: 2021 Nicolas Fella <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#include "kcolorschemewatcher.h" + +#include "kcolorschemewatcherbackend.h" + +#ifdef Q_OS_WINDOWS +#include "kcolorschemewatcher_win.h" +#endif + +#ifdef Q_OS_MACOS +#include "kcolorschemewatcher_mac.h" +#endif + +#ifdef QT_DBUS_LIB +#include "kcolorschemewatcher_xdg.h" +#endif + +class KColorSchemeWatcherPrivate +{ +public: + std::unique_ptr<KColorSchemeWatcherBackend> backend; + + KColorSchemeWatcherPrivate() + { +#ifdef Q_OS_WINDOWS + backend = std::make_unique<KColorSchemeWatcherWin>(); +#elif defined(Q_OS_MACOS) + backend = std::make_unique<KColorSchemeWatcherMac>(); +#elif defined(QT_DBUS_LIB) + backend = std::make_unique<KColorSchemeWatcherXDG>(); +#endif + } +}; + +KColorSchemeWatcher::KColorSchemeWatcher(QObject *parent) + : QObject(parent) + , d(new KColorSchemeWatcherPrivate) +{ + if (d->backend) { + connect(d->backend.get(), &KColorSchemeWatcherBackend::systemPreferenceChanged, this, &KColorSchemeWatcher::systemPreferenceChanged); + } +} + +KColorSchemeWatcher::~KColorSchemeWatcher() +{ +} + +KColorSchemeWatcher::ColorPreference KColorSchemeWatcher::systemPreference() const +{ + if (d->backend) { + return d->backend->systemPreference(); + } + + return NoPreference; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher.h new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher.h --- old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher.h 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,51 @@ +/* + * SPDX-FileCopyrightText: 2021 Nicolas Fella <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#ifndef KCOLORSCHEMEWATCHER_H +#define KCOLORSCHEMEWATCHER_H + +#include "kguiaddons_export.h" + +#include <QObject> + +#include <memory> + +class KColorSchemeWatcherPrivate; + +/** + * Information about system-wide color preferences. + * @since 5.100 + */ +class KGUIADDONS_EXPORT KColorSchemeWatcher : public QObject +{ + Q_OBJECT +public: + enum ColorPreference { + NoPreference = 0, /** No preference available */ + PreferDark, /** The user prefers a dark color scheme */ + PreferLight, /** The user prefers a light color scheme */ + }; + Q_ENUM(ColorPreference) + + KColorSchemeWatcher(QObject *parent = nullptr); + ~KColorSchemeWatcher() override; + + /** + * The system-wide color preference. + */ + ColorPreference systemPreference() const; + +Q_SIGNALS: + /** + * Emitted when systemPreference changes. + */ + void systemPreferenceChanged(); + +private: + std::unique_ptr<KColorSchemeWatcherPrivate> const d; +}; + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_mac.h new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_mac.h --- old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_mac.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_mac.h 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 2022 Georg Gadinger <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#ifndef KCOLORSCHEMEWATCHER_MAC_H +#define KCOLORSCHEMEWATCHER_MAC_H + +#include "kcolorschemewatcherbackend.h" + +class KColorSchemeWatcherMac : public KColorSchemeWatcherBackend +{ + Q_OBJECT + +public: + explicit KColorSchemeWatcherMac(); + ~KColorSchemeWatcherMac(); + + KColorSchemeWatcher::ColorPreference systemPreference() const override; + +private: + // not ideal, in obj-c++ this would be an `id`, but since this header is + // included from pure C++ files the compiler will not know what to do with + // an `id` + void *m_observer; +}; + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_mac.mm new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_mac.mm --- old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_mac.mm 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_mac.mm 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,38 @@ +/* + * SPDX-FileCopyrightText: 2022 Georg Gadinger <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#include "kcolorschemewatcher_mac.h" + +#import <AppKit/AppKit.h> + +#include <QTimer> + +KColorSchemeWatcherMac::KColorSchemeWatcherMac() +{ + // subscribe to the distributed notification centre + id notificationCenter = NSDistributedNotificationCenter.defaultCenter; + m_observer = [notificationCenter addObserverForName:@"AppleInterfaceThemeChangedNotification" + object:nil + queue:nil + usingBlock:^(NSNotification *) { + // "fun" workaround to not emit the signal immediately after receiving the notification. + // for some reason NSAppearance.currentDrawingAppearance is still set to the old value here, after a short + // delay it is updated correctly + QTimer::singleShot(0, [this]() { + Q_EMIT systemPreferenceChanged(); + }); + }]; +} + +KColorSchemeWatcherMac::~KColorSchemeWatcherMac() +{ + [NSDistributedNotificationCenter.defaultCenter removeObserver:static_cast<id>(m_observer)]; +} + +KColorSchemeWatcher::ColorPreference KColorSchemeWatcherMac::systemPreference() const +{ + return NSAppearance.currentDrawingAppearance.name == NSAppearanceNameDarkAqua ? KColorSchemeWatcher::PreferDark : KColorSchemeWatcher::PreferLight; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_win.cpp new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_win.cpp --- old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_win.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_win.cpp 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,49 @@ +/* + * SPDX-FileCopyrightText: 2020 Piyush Aggarwal <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#include "kcolorschemewatcher_win.h" + +#include <windows.h> + +#include <QAbstractEventDispatcher> + +#include <QDebug> + +KColorSchemeWatcherWin::KColorSchemeWatcherWin() +{ + QAbstractEventDispatcher::instance()->installNativeEventFilter(this); + + m_preferDarkMode = !(m_settings.value(QStringLiteral("SystemUsesLightTheme")).value<bool>()); +} + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +bool KColorSchemeWatcherWin::nativeEventFilter(const QByteArray &eventType, void *message, long *) +#else +bool KColorSchemeWatcherWin::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *) +#endif +{ + MSG *msg = static_cast<MSG *>(message); + switch (msg->message) { + case WM_SETTINGCHANGE: { + m_settings.sync(); + const bool preferDarkModeNow = !(m_settings.value(QStringLiteral("AppsUseLightTheme"), true).value<bool>()); + if (m_preferDarkMode != preferDarkModeNow) { + m_preferDarkMode = preferDarkModeNow; + Q_EMIT systemPreferenceChanged(); + } + + break; + } + default: { + } + } + return false; +} + +KColorSchemeWatcher::ColorPreference KColorSchemeWatcherWin::systemPreference() const +{ + return m_preferDarkMode ? KColorSchemeWatcher::PreferDark : KColorSchemeWatcher::PreferLight; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_win.h new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_win.h --- old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_win.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_win.h 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,33 @@ +/* + * SPDX-FileCopyrightText: 2020 Piyush Aggarwal <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#ifndef KCOLORSCHEMEWATCHER_WIN_H +#define KCOLORSCHEMEWATCHER_WIN_H + +#include <QAbstractNativeEventFilter> +#include <QSettings> + +#include "kcolorschemewatcherbackend.h" + +class KColorSchemeWatcherWin : public KColorSchemeWatcherBackend, public QAbstractNativeEventFilter +{ + Q_OBJECT +public: + KColorSchemeWatcherWin(); + KColorSchemeWatcher::ColorPreference systemPreference() const override; + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + bool nativeEventFilter(const QByteArray &eventType, void *message, long *) override; +#else + bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *) override; +#endif + +private: + QSettings m_settings{QStringLiteral("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"), QSettings::NativeFormat}; + bool m_preferDarkMode = false; +}; + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_xdg.cpp new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_xdg.cpp --- old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_xdg.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_xdg.cpp 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,66 @@ +/* + * SPDX-FileCopyrightText: 2021 Nicolas Fella <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#include "kcolorschemewatcher_xdg.h" + +#include <QDBusConnection> +#include <QDBusMessage> +#include <QDBusVariant> +#include <QDebug> + +KColorSchemeWatcherXDG::KColorSchemeWatcherXDG() + : KColorSchemeWatcherBackend() +{ + QDBusConnection::sessionBus().connect(QStringLiteral("org.freedesktop.portal.Desktop"), + QStringLiteral("/org/freedesktop/portal/desktop"), + QStringLiteral("org.freedesktop.portal.Settings"), + QStringLiteral("SettingChanged"), + this, + SLOT(slotSettingChanged(QString, QString, QDBusVariant))); + + QDBusMessage m = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.portal.Desktop"), + QStringLiteral("/org/freedesktop/portal/desktop"), + QStringLiteral("org.freedesktop.portal.Settings"), + QStringLiteral("Read")); + m.setArguments({QStringLiteral("org.freedesktop.appearance"), QStringLiteral("color-scheme")}); + + auto reply = QDBusConnection::sessionBus().call(m); + + const uint result = reply.arguments().first().value<QDBusVariant>().variant().value<QDBusVariant>().variant().toUInt(); + m_preference = fdoToInternal(result); +} + +KColorSchemeWatcher::ColorPreference KColorSchemeWatcherXDG::systemPreference() const +{ + return m_preference; +} + +void KColorSchemeWatcherXDG::slotSettingChanged(QString nameSpace, QString key, QDBusVariant value) +{ + if (nameSpace == QLatin1String("org.freedesktop.appearance") && key == QLatin1String("color-scheme")) { + const uint result = value.variant().toUInt(); + auto newValue = fdoToInternal(result); + + if (m_preference != newValue) { + m_preference = fdoToInternal(result); + Q_EMIT systemPreferenceChanged(); + } + } +} + +KColorSchemeWatcher::ColorPreference KColorSchemeWatcherXDG::fdoToInternal(uint value) const +{ + if (value == 0) { + return KColorSchemeWatcher::NoPreference; + } else if (value == 1) { + return KColorSchemeWatcher::PreferDark; + } else if (value == 2) { + return KColorSchemeWatcher::PreferLight; + } else { + qWarning() << "Unhandled org.freedesktop.appearance color-scheme value" << value; + return KColorSchemeWatcher::NoPreference; + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_xdg.h new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_xdg.h --- old/kguiaddons-5.99.0/src/colors/kcolorschemewatcher_xdg.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/src/colors/kcolorschemewatcher_xdg.h 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 2021 Nicolas Fella <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#ifndef KCOLORSCHEMEWATCHER_XDG_H +#define KCOLORSCHEMEWATCHER_XDG_H + +#include "kcolorschemewatcherbackend.h" + +#include <QDBusVariant> + +class KColorSchemeWatcherXDG : public KColorSchemeWatcherBackend +{ + Q_OBJECT +public: + KColorSchemeWatcherXDG(); + KColorSchemeWatcher::ColorPreference systemPreference() const override; + +private Q_SLOTS: + void slotSettingChanged(QString, QString, QDBusVariant); + +private: + KColorSchemeWatcher::ColorPreference fdoToInternal(uint value) const; + KColorSchemeWatcher::ColorPreference m_preference = KColorSchemeWatcher::NoPreference; +}; + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/colors/kcolorschemewatcherbackend.cpp new/kguiaddons-5.100.0/src/colors/kcolorschemewatcherbackend.cpp --- old/kguiaddons-5.99.0/src/colors/kcolorschemewatcherbackend.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/src/colors/kcolorschemewatcherbackend.cpp 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,7 @@ +/* + * SPDX-FileCopyrightText: 2021 Nicolas Fella <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#include "kcolorschemewatcherbackend.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/colors/kcolorschemewatcherbackend.h new/kguiaddons-5.100.0/src/colors/kcolorschemewatcherbackend.h --- old/kguiaddons-5.99.0/src/colors/kcolorschemewatcherbackend.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/src/colors/kcolorschemewatcherbackend.h 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,24 @@ +/* + * SPDX-FileCopyrightText: 2021 Nicolas Fella <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#ifndef KCOLORSCHEMEWATCHERBACKEND_H +#define KCOLORSCHEMEWATCHERBACKEND_H + +#include <QObject> + +#include "kcolorschemewatcher.h" + +class KColorSchemeWatcherBackend : public QObject +{ + Q_OBJECT +public: + virtual KColorSchemeWatcher::ColorPreference systemPreference() const = 0; + +Q_SIGNALS: + void systemPreferenceChanged(); +}; + +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/systemclipboard/waylandclipboard.cpp new/kguiaddons-5.100.0/src/systemclipboard/waylandclipboard.cpp --- old/kguiaddons-5.99.0/src/systemclipboard/waylandclipboard.cpp 2022-10-01 15:16:36.000000000 +0200 +++ new/kguiaddons-5.100.0/src/systemclipboard/waylandclipboard.cpp 2022-11-05 13:27:14.000000000 +0100 @@ -456,7 +456,6 @@ m_selection = std::move(selection); connect(m_selection.get(), &DataControlSource::cancelled, this, [this]() { m_selection.reset(); - Q_EMIT selectionChanged(); }); set_selection(m_selection->object()); Q_EMIT selectionChanged(); @@ -467,7 +466,6 @@ m_primarySelection = std::move(selection); connect(m_primarySelection.get(), &DataControlSource::cancelled, this, [this]() { m_primarySelection.reset(); - Q_EMIT primarySelectionChanged(); }); if (zwlr_data_control_device_v1_get_version(object()) >= ZWLR_DATA_CONTROL_DEVICE_V1_SET_PRIMARY_SELECTION_SINCE_VERSION) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/src/util/kmodifierkeyinfoprovider_wayland.cpp new/kguiaddons-5.100.0/src/util/kmodifierkeyinfoprovider_wayland.cpp --- old/kguiaddons-5.99.0/src/util/kmodifierkeyinfoprovider_wayland.cpp 2022-10-01 15:16:36.000000000 +0200 +++ new/kguiaddons-5.100.0/src/util/kmodifierkeyinfoprovider_wayland.cpp 2022-11-05 13:27:14.000000000 +0100 @@ -9,6 +9,7 @@ #include <QDebug> #include <QtWaylandClient/qwaylandclientextension.h> +#include <wayland-client-core.h> #include "qwayland-keystate.h" @@ -21,6 +22,13 @@ { } + ~KeyState() + { + if (isInitialized()) { + wl_proxy_destroy(reinterpret_cast<struct wl_proxy *>(object())); + } + } + void org_kde_kwin_keystate_stateChanged(uint32_t key, uint32_t state) override { Q_EMIT stateChanged(toKey(static_cast<KeyState::key>(key)), toState(static_cast<KeyState::state>(state))); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/tests/CMakeLists.txt new/kguiaddons-5.100.0/tests/CMakeLists.txt --- old/kguiaddons-5.99.0/tests/CMakeLists.txt 2022-10-01 15:16:36.000000000 +0200 +++ new/kguiaddons-5.100.0/tests/CMakeLists.txt 2022-11-05 13:27:14.000000000 +0100 @@ -18,4 +18,5 @@ kmodifierkeyinfotest openurltest kcursorsavergui_test + kcolorschemewatchertest ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kguiaddons-5.99.0/tests/kcolorschemewatchertest.cpp new/kguiaddons-5.100.0/tests/kcolorschemewatchertest.cpp --- old/kguiaddons-5.99.0/tests/kcolorschemewatchertest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kguiaddons-5.100.0/tests/kcolorschemewatchertest.cpp 2022-11-05 13:27:14.000000000 +0100 @@ -0,0 +1,42 @@ +/* + * SPDX-FileCopyrightText: 2021 Nicolas Fella <[email protected]> + * + * SPDX-License-Identifier: LGPL-2.0-or-later + */ + +#include <kcolorschemewatcher.h> + +#include <QGuiApplication> +#include <QDebug> + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + KColorSchemeWatcher w; + + qDebug() << "System color preference:"; + + if (w.systemPreference() == KColorSchemeWatcher::NoPreference) { + qDebug() << "no preference"; + } else if (w.systemPreference() == KColorSchemeWatcher::PreferDark) { + qDebug() << "dark"; + } + if (w.systemPreference() == KColorSchemeWatcher::PreferLight) { + qDebug() << "light"; + } + + QObject::connect(&w, &KColorSchemeWatcher::systemPreferenceChanged, &app, [&w] { + qDebug() << "preference changed to:"; + + if (w.systemPreference() == KColorSchemeWatcher::NoPreference) { + qDebug() << "no preference"; + } else if (w.systemPreference() == KColorSchemeWatcher::PreferDark) { + qDebug() << "dark"; + } + if (w.systemPreference() == KColorSchemeWatcher::PreferLight) { + qDebug() << "light"; + } + }); + + return app.exec(); +}
