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();
+}

Reply via email to