Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kwayland-integration for 
openSUSE:Factory checked in at 2021-10-13 18:03:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kwayland-integration (Old)
 and      /work/SRC/openSUSE:Factory/.kwayland-integration.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kwayland-integration"

Wed Oct 13 18:03:29 2021 rev:108 rq:924705 version:5.23.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/kwayland-integration/kwayland-integration.changes    
    2021-09-04 22:33:11.975980053 +0200
+++ 
/work/SRC/openSUSE:Factory/.kwayland-integration.new.2443/kwayland-integration.changes
      2021-10-13 18:05:26.975214685 +0200
@@ -1,0 +2,32 @@
+Thu Oct  7 13:50:07 UTC 2021 - Fabian Vogt <fab...@ritter-vogt.de>
+
+- Update to 5.23.0
+  * New bugfix release
+  * For more details please see:
+  * https://kde.org/announcements/plasma/5/5.23.0
+- No code changes since 5.22.90
+- Add new key + signature to plasma.keyring
+
+-------------------------------------------------------------------
+Thu Sep 16 13:04:52 UTC 2021 - Fabian Vogt <fab...@ritter-vogt.de>
+
+- Update to 5.22.90
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/plasma/5/5.22.90
+- Changes since 5.22.5:
+  * fix a dirty shadows (kde#439408)
+  * Implement setting frost
+  * Add pre-commit hook for clang-format
+  * Add .git-blame-ignore-revs file
+  * Run clang-format
+  * Explicitly set KDE_COMPILERSETTINGS_LEVEL
+  * Guard use of activation proxy (kde#440448)
+  * Fix compile with last ecm
+  * Fix build with GCC
+  * Be more explicit about types, hopefully fix CI builds
+  * Improve the behaviour when we are requesting without a window
+  * Also link against xkb and fix build
+  * Provide an implementation for the xdg_activation_v1 API
+
+-------------------------------------------------------------------

Old:
----
  kwayland-integration-5.22.5.tar.xz
  kwayland-integration-5.22.5.tar.xz.sig

New:
----
  kwayland-integration-5.23.0.tar.xz
  kwayland-integration-5.23.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kwayland-integration.spec ++++++
--- /var/tmp/diff_new_pack.o1zLa4/_old  2021-10-13 18:05:28.111216466 +0200
+++ /var/tmp/diff_new_pack.o1zLa4/_new  2021-10-13 18:05:28.111216466 +0200
@@ -18,7 +18,7 @@
 
 %bcond_without lang
 Name:           kwayland-integration
-Version:        5.22.5
+Version:        5.23.0
 Release:        0
 # Full Plasma 5 version (e.g. 5.8.95)
 %{!?_plasma5_bugfix: %define _plasma5_bugfix %{version}}
@@ -28,20 +28,27 @@
 License:        LGPL-2.1-or-later
 Group:          Development/Libraries/KDE
 URL:            http://www.kde.org
-Source:         
https://download.kde.org/stable/plasma/%{version}/kwayland-integration-%{version}.tar.xz
+Source:         kwayland-integration-%{version}.tar.xz
 %if %{with lang}
-Source1:        
https://download.kde.org/stable/plasma/%{version}/kwayland-integration-%{version}.tar.xz.sig
+Source1:        kwayland-integration-%{version}.tar.xz.sig
 Source2:        plasma.keyring
 %endif
 BuildRequires:  cmake >= 3.16
 BuildRequires:  extra-cmake-modules >= 0.0.11
 BuildRequires:  kf5-filesystem
+BuildRequires:  libQt5PlatformSupport-private-headers-devel
+BuildRequires:  libqt5-qtwayland-private-headers-devel
+BuildRequires:  pkgconfig
 BuildRequires:  cmake(KF5GuiAddons) >= 5.60.0
 BuildRequires:  cmake(KF5IdleTime) >= 5.24.0
 BuildRequires:  cmake(KF5Wayland) >= 5.24.0
 BuildRequires:  cmake(KF5WindowSystem) >= 5.24.0
 BuildRequires:  cmake(Qt5Core) >= 5.4.0
 BuildRequires:  cmake(Qt5Test) >= 5.4.0
+BuildRequires:  cmake(Qt5WaylandClient)
+BuildRequires:  cmake(Qt5XkbCommonSupport)
+BuildRequires:  pkgconfig(wayland-protocols)
+BuildRequires:  pkgconfig(xkbcommon)
 
 %description
 Provides integration plugins for various KDE frameworks for the wayland 
windowing system.

++++++ kwayland-integration-5.22.5.tar.xz -> kwayland-integration-5.23.0.tar.xz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-integration-5.22.5/.git-blame-ignore-revs 
new/kwayland-integration-5.23.0/.git-blame-ignore-revs
--- old/kwayland-integration-5.22.5/.git-blame-ignore-revs      1970-01-01 
01:00:00.000000000 +0100
+++ new/kwayland-integration-5.23.0/.git-blame-ignore-revs      2021-10-07 
13:38:18.000000000 +0200
@@ -0,0 +1 @@
+29029dd8e96606f86067be2a5e7a16bb11e52790
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-integration-5.22.5/CMakeLists.txt 
new/kwayland-integration-5.23.0/CMakeLists.txt
--- old/kwayland-integration-5.22.5/CMakeLists.txt      2021-08-31 
13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/CMakeLists.txt      2021-10-07 
13:38:18.000000000 +0200
@@ -1,10 +1,14 @@
 project(kwayland-integration)
-set(PROJECT_VERSION "5.22.5")
+
+set(CMAKE_C_STANDARD 99)
+
+set(PROJECT_VERSION "5.23.0")
 set(PROJECT_VERSION_MAJOR 5)
 
 cmake_minimum_required(VERSION 3.16)
 set(QT_MIN_VERSION "5.15.0")
 set(KF5_MIN_VERSION "5.82")
+set(KDE_COMPILERSETTINGS_LEVEL "5.82")
 
 set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -20,6 +24,8 @@
 find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
     Core
     Widgets
+    WaylandClient
+    XkbCommonSupport # Needed by Qt5::WaylandClientPrivate
 )
 
 include(KDEInstallDirs)
@@ -27,24 +33,31 @@
 include(KDECompilerSettings NO_POLICY_SCOPE)
 include(ECMQtDeclareLoggingCategory)
 include(KDEClangFormat)
+include(KDEGitCommitHooks)
 
 # required frameworks
 find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
     IdleTime
     WindowSystem
     GuiAddons
+    Wayland
 )
-find_package(KF5Wayland CONFIG REQUIRED)
+
+find_package(QtWaylandScanner REQUIRED)
+find_package(WaylandProtocols 1.21 REQUIRED)
+find_package(Wayland 1.15 COMPONENTS Client)
+find_package(PkgConfig REQUIRED)
 
 #add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x060000)
 
 add_subdirectory(src)
 if(BUILD_TESTING)
    add_subdirectory(autotests)
-endif()   
+endif()
 
 # add clang-format target for all our real source files
 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
+kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
 
 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/autotests/idletime/idle_test.cpp 
new/kwayland-integration-5.23.0/autotests/idletime/idle_test.cpp
--- old/kwayland-integration-5.22.5/autotests/idletime/idle_test.cpp    
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/autotests/idletime/idle_test.cpp    
2021-10-07 13:38:18.000000000 +0200
@@ -4,13 +4,13 @@
     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR 
LicenseRef-KDE-Accepted-LGPL
 */
 // Qt
-#include <QtTest>
 #include <QSignalSpy>
+#include <QtTest>
 // Frameworks
 #include <KIdleTime>
 #include <KWayland/Client/connection_thread.h>
-#include <KWayland/Client/registry.h>
 #include <KWayland/Client/fakeinput.h>
+#include <KWayland/Client/registry.h>
 
 using namespace KWayland::Client;
 
@@ -72,7 +72,7 @@
     QVERIFY(KIdleTime::instance()->idleTimeouts().isEmpty());
     QSignalSpy timeout1Spy(KIdleTime::instance(), SIGNAL(timeoutReached(int)));
     QVERIFY(timeout1Spy.isValid());
-    QSignalSpy timeout2Spy(KIdleTime::instance(), 
SIGNAL(timeoutReached(int,int)));
+    QSignalSpy timeout2Spy(KIdleTime::instance(), SIGNAL(timeoutReached(int, 
int)));
     QVERIFY(timeout2Spy.isValid());
 
     const auto id = KIdleTime::instance()->addIdleTimeout(6000);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-integration-5.22.5/src/idletime/poller.cpp 
new/kwayland-integration-5.23.0/src/idletime/poller.cpp
--- old/kwayland-integration-5.22.5/src/idletime/poller.cpp     2021-08-31 
13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/idletime/poller.cpp     2021-10-07 
13:38:18.000000000 +0200
@@ -10,8 +10,8 @@
 #include <KWayland/Client/registry.h>
 #include <KWayland/Client/seat.h>
 
-#include <QGuiApplication>
 #include <QDebug>
+#include <QGuiApplication>
 #include <QLoggingCategory>
 #include <QMutex>
 #include <QMutexLocker>
@@ -41,11 +41,14 @@
     }
     // need to be able to cleanup prior to the Wayland connection being 
destroyed
     // otherwise we get a crash in libwayland
-    connect(reinterpret_cast<QObject*>(qApp->platformNativeInterface()), 
&QObject::destroyed, this, &Poller::unloadPoller);
+    connect(reinterpret_cast<QObject *>(qApp->platformNativeInterface()), 
&QObject::destroyed, this, &Poller::unloadPoller);
     m_registry = new Registry(this);
     m_registry->create(m_connectionThread);
-    connect(m_registry, &Registry::seatAnnounced, this,
-        [this] (quint32 name, quint32 version) {
+    connect(
+        m_registry,
+        &Registry::seatAnnounced,
+        this,
+        [this](quint32 name, quint32 version) {
             QMutexLocker locker(m_registryMutex.data());
             if (m_seat.name != 0) {
                 // already have a seat
@@ -53,10 +56,13 @@
             }
             m_seat.name = name;
             m_seat.version = version;
-        }, Qt::DirectConnection
-    );
-    connect(m_registry, &Registry::idleAnnounced, this,
-        [this] (quint32 name, quint32 version) {
+        },
+        Qt::DirectConnection);
+    connect(
+        m_registry,
+        &Registry::idleAnnounced,
+        this,
+        [this](quint32 name, quint32 version) {
             QMutexLocker locker(m_registryMutex.data());
             if (m_idle.name != 0) {
                 // already have a seat
@@ -64,16 +70,19 @@
             }
             m_idle.name = name;
             m_idle.version = version;
-        }, Qt::DirectConnection
-    );
-    connect(m_registry, &Registry::interfacesAnnounced, this,
+        },
+        Qt::DirectConnection);
+    connect(
+        m_registry,
+        &Registry::interfacesAnnounced,
+        this,
         [this] {
             m_registryMutex->lock();
             m_inited = true;
             m_registryMutex->unlock();
             m_registryAnnouncedCondition->wakeAll();
-        }, Qt::DirectConnection
-    );
+        },
+        Qt::DirectConnection);
 
     m_registry->setup();
     m_connectionThread->roundtrip();
@@ -134,11 +143,9 @@
     }
     auto timeout = m_idle.idle->getTimeout(nextTimeout, m_seat.seat, this);
     m_timeouts.insert(nextTimeout, timeout);
-    connect(timeout, &KWayland::Client::IdleTimeout::idle, this,
-        [this, nextTimeout] {
-            Q_EMIT timeoutReached(nextTimeout);
-        }
-    );
+    connect(timeout, &KWayland::Client::IdleTimeout::idle, this, [this, 
nextTimeout] {
+        Q_EMIT timeoutReached(nextTimeout);
+    });
     connect(timeout, &KWayland::Client::IdleTimeout::resumeFromIdle, this, 
&Poller::resumingFromIdle);
 }
 
@@ -152,7 +159,7 @@
     m_timeouts.erase(it);
 }
 
-QList< int > Poller::timeouts() const
+QList<int> Poller::timeouts() const
 {
     return QList<int>();
 }
@@ -167,12 +174,10 @@
         return;
     }
     m_catchResumeTimeout = m_idle.idle->getTimeout(0, m_seat.seat, this);
-    connect(m_catchResumeTimeout, 
&KWayland::Client::IdleTimeout::resumeFromIdle, this,
-        [this] {
-            stopCatchingIdleEvents();
-            Q_EMIT resumingFromIdle();
-        }
-    );
+    connect(m_catchResumeTimeout, 
&KWayland::Client::IdleTimeout::resumeFromIdle, this, [this] {
+        stopCatchingIdleEvents();
+        Q_EMIT resumingFromIdle();
+    });
 }
 
 void Poller::stopCatchingIdleEvents()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kwayland-integration-5.22.5/src/idletime/poller.h 
new/kwayland-integration-5.23.0/src/idletime/poller.h
--- old/kwayland-integration-5.22.5/src/idletime/poller.h       2021-08-31 
13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/idletime/poller.h       2021-10-07 
13:38:18.000000000 +0200
@@ -66,7 +66,7 @@
     KWayland::Client::ConnectionThread *m_connectionThread = nullptr;
     KWayland::Client::Registry *m_registry = nullptr;
     KWayland::Client::IdleTimeout *m_catchResumeTimeout = nullptr;
-    QHash<int, KWayland::Client::IdleTimeout*> m_timeouts;
+    QHash<int, KWayland::Client::IdleTimeout *> m_timeouts;
 };
 
 #endif /* XSYNCBASEDPOLLER_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/kmodifierkeyinfoprovider/kmodifierkeyinfoprovider_wayland.cpp
 
new/kwayland-integration-5.23.0/src/kmodifierkeyinfoprovider/kmodifierkeyinfoprovider_wayland.cpp
--- 
old/kwayland-integration-5.22.5/src/kmodifierkeyinfoprovider/kmodifierkeyinfoprovider_wayland.cpp
   2021-08-31 13:40:16.000000000 +0200
+++ 
new/kwayland-integration-5.23.0/src/kmodifierkeyinfoprovider/kmodifierkeyinfoprovider_wayland.cpp
   2021-10-07 13:38:18.000000000 +0200
@@ -5,8 +5,8 @@
 */
 
 #include "kmodifierkeyinfoprovider_wayland.h"
-#include <KWayland/Client/registry.h>
 #include <KWayland/Client/connection_thread.h>
+#include <KWayland/Client/registry.h>
 #include <QDebug>
 #include <QTimer>
 
@@ -49,13 +49,13 @@
 
 KModifierKeyInfoProvider::ModifierState toState(Keystate::State state)
 {
-    switch(state) {
-        case Keystate::State::Unlocked:
-            return KModifierKeyInfoProvider::Nothing;
-        case Keystate::State::Latched:
-            return KModifierKeyInfoProvider::Latched;
-        case Keystate::State::Locked:
-            return KModifierKeyInfoProvider::Locked;
+    switch (state) {
+    case Keystate::State::Unlocked:
+        return KModifierKeyInfoProvider::Nothing;
+    case Keystate::State::Latched:
+        return KModifierKeyInfoProvider::Latched;
+    case Keystate::State::Locked:
+        return KModifierKeyInfoProvider::Locked;
     }
     Q_UNREACHABLE();
     return KModifierKeyInfoProvider::Nothing;
@@ -63,13 +63,13 @@
 
 Qt::Key toKey(Keystate::Key key)
 {
-    switch(key) {
-        case Keystate::Key::CapsLock:
-            return Qt::Key_CapsLock;
-        case Keystate::Key::NumLock:
-            return Qt::Key_NumLock;
-        case Keystate::Key::ScrollLock:
-            return Qt::Key_ScrollLock;
+    switch (key) {
+    case Keystate::Key::CapsLock:
+        return Qt::Key_CapsLock;
+    case Keystate::Key::NumLock:
+        return Qt::Key_NumLock;
+    case Keystate::Key::ScrollLock:
+        return Qt::Key_ScrollLock;
     }
     Q_UNREACHABLE();
     return {};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/kmodifierkeyinfoprovider/kmodifierkeyinfoprovider_wayland.h
 
new/kwayland-integration-5.23.0/src/kmodifierkeyinfoprovider/kmodifierkeyinfoprovider_wayland.h
--- 
old/kwayland-integration-5.22.5/src/kmodifierkeyinfoprovider/kmodifierkeyinfoprovider_wayland.h
     2021-08-31 13:40:16.000000000 +0200
+++ 
new/kwayland-integration-5.23.0/src/kmodifierkeyinfoprovider/kmodifierkeyinfoprovider_wayland.h
     2021-10-07 13:38:18.000000000 +0200
@@ -7,14 +7,14 @@
 #ifndef KMODIFIERKEYINFOPROVIDERWAYLAND_H
 #define KMODIFIERKEYINFOPROVIDERWAYLAND_H
 
-#include <kmodifierkeyinfoprovider_p.h>
 #include <KWayland/Client/keystate.h>
 #include <QPointer>
+#include <kmodifierkeyinfoprovider_p.h>
 
 class KModifierKeyInfoProviderWayland : public KModifierKeyInfoProvider
 {
-Q_OBJECT
-Q_PLUGIN_METADATA(IID "org.kde.kguiaddons.KModifierKeyInfoProvider.Wayland")
+    Q_OBJECT
+    Q_PLUGIN_METADATA(IID 
"org.kde.kguiaddons.KModifierKeyInfoProvider.Wayland")
 public:
     KModifierKeyInfoProviderWayland();
     ~KModifierKeyInfoProviderWayland();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/CMakeLists.txt 
new/kwayland-integration-5.23.0/src/windowsystem/CMakeLists.txt
--- old/kwayland-integration-5.22.5/src/windowsystem/CMakeLists.txt     
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/CMakeLists.txt     
2021-10-07 13:38:18.000000000 +0200
@@ -6,17 +6,29 @@
     windowinfo.cpp
     windowshadow.cpp
     windowsystem.cpp
+    waylandxdgactivationv1.cpp
+)
+
+ecm_add_qtwayland_client_protocol(wayland_plugin_SRCS
+    PROTOCOL 
${WaylandProtocols_DATADIR}/staging/xdg-activation/xdg-activation-v1.xml
+    BASENAME xdg-activation-v1
 )
 ecm_qt_declare_logging_category(wayland_plugin_SRCS HEADER logging.h 
IDENTIFIER KWAYLAND_KWS
     CATEGORY_NAME org.kde.kf5.kwindowsystem.kwayland DEFAULT_SEVERITY Warning
     DESCRIPTION "wayland integration (windowsystem)" EXPORT KWAYLAND)
 
+pkg_check_modules(XKBCommon REQUIRED IMPORTED_TARGET xkbcommon)
 
 add_library(KF5WindowSystemKWaylandPlugin MODULE ${wayland_plugin_SRCS})
 target_link_libraries(KF5WindowSystemKWaylandPlugin
     KF5::WindowSystem
     KF5::WaylandClient
     Qt::Widgets
+    Wayland::Client
+    Qt::WaylandClient
+    Qt::WaylandClientPrivate
+    Qt::XkbCommonSupportPrivate
+    PkgConfig::XKBCommon
 )
 
 install(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/plugin.cpp 
new/kwayland-integration-5.23.0/src/windowsystem/plugin.cpp
--- old/kwayland-integration-5.22.5/src/windowsystem/plugin.cpp 2021-08-31 
13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/plugin.cpp 2021-10-07 
13:38:18.000000000 +0200
@@ -4,10 +4,10 @@
     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR 
LicenseRef-KDE-Accepted-LGPL
 */
 #include "plugin.h"
-#include "windowshadow.h"
-#include "windowsystem.h"
 #include "windoweffects.h"
 #include "windowinfo.h"
+#include "windowshadow.h"
+#include "windowsystem.h"
 
 KWaylandPlugin::KWaylandPlugin(QObject *parent)
     : KWindowSystemPluginInterface(parent)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/waylandintegration.cpp 
new/kwayland-integration-5.23.0/src/windowsystem/waylandintegration.cpp
--- old/kwayland-integration-5.22.5/src/windowsystem/waylandintegration.cpp     
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/waylandintegration.cpp     
2021-10-07 13:38:18.000000000 +0200
@@ -9,21 +9,22 @@
 #include "waylandintegration.h"
 #include "logging.h"
 
-#include <KWayland/Client/connection_thread.h>
-#include <KWayland/Client/registry.h>
-#include <KWayland/Client/compositor.h>
-#include <KWayland/Client/plasmawindowmanagement.h>
-#include <KWayland/Client/plasmashell.h>
-#include <KWayland/Client/surface.h>
 #include <KWayland/Client/blur.h>
+#include <KWayland/Client/compositor.h>
+#include <KWayland/Client/connection_thread.h>
 #include <KWayland/Client/contrast.h>
+#include <KWayland/Client/plasmashell.h>
+#include <KWayland/Client/plasmawindowmanagement.h>
 #include <KWayland/Client/region.h>
-#include <KWayland/Client/slide.h>
+#include <KWayland/Client/registry.h>
 #include <KWayland/Client/shadow.h>
 #include <KWayland/Client/shm_pool.h>
+#include <KWayland/Client/slide.h>
+#include <KWayland/Client/surface.h>
 
 #include <KWindowSystem/KWindowSystem>
 
+#include "waylandxdgactivationv1_p.h"
 #include <QGuiApplication>
 
 class WaylandIntegrationSingleton
@@ -41,7 +42,8 @@
 }
 
 WaylandIntegration::~WaylandIntegration()
-{}
+{
+}
 
 void WaylandIntegration::setupKWaylandIntegration()
 {
@@ -52,6 +54,12 @@
         return;
     }
     m_registry = new Registry(qApp);
+    connect(m_registry, &KWayland::Client::Registry::interfaceAnnounced, this, 
[this](const QByteArray &interfaceName, quint32 name, quint32 version) {
+        if (interfaceName != xdg_activation_v1_interface.name)
+            return;
+
+        m_activationInterface = {name, version};
+    });
     m_registry->create(m_waylandConnection);
     m_waylandCompositor = Compositor::fromApplication(this);
 
@@ -64,7 +72,6 @@
     return &privateWaylandIntegrationSelf()->self;
 }
 
-
 KWayland::Client::ConnectionThread *WaylandIntegration::waylandConnection() 
const
 {
     return m_waylandConnection;
@@ -81,11 +88,9 @@
 
         m_waylandBlurManager = m_registry->createBlurManager(wmInterface.name, 
wmInterface.version, qApp);
 
-        connect(m_waylandBlurManager, &KWayland::Client::BlurManager::removed, 
this,
-            [this] () {
-                m_waylandBlurManager->deleteLater();
-            }
-        );
+        connect(m_waylandBlurManager, &KWayland::Client::BlurManager::removed, 
this, [this]() {
+            m_waylandBlurManager->deleteLater();
+        });
     }
 
     return m_waylandBlurManager;
@@ -102,11 +107,9 @@
 
         m_waylandContrastManager = 
m_registry->createContrastManager(wmInterface.name, wmInterface.version, qApp);
 
-        connect(m_waylandContrastManager, 
&KWayland::Client::ContrastManager::removed, this,
-            [this] () {
-                m_waylandContrastManager->deleteLater();
-            }
-        );
+        connect(m_waylandContrastManager, 
&KWayland::Client::ContrastManager::removed, this, [this]() {
+            m_waylandContrastManager->deleteLater();
+        });
     }
     return m_waylandContrastManager;
 }
@@ -122,11 +125,9 @@
 
         m_waylandSlideManager = 
m_registry->createSlideManager(wmInterface.name, wmInterface.version, qApp);
 
-        connect(m_waylandSlideManager, 
&KWayland::Client::SlideManager::removed, this,
-            [this] () {
-                m_waylandSlideManager->deleteLater();
-            }
-        );
+        connect(m_waylandSlideManager, 
&KWayland::Client::SlideManager::removed, this, [this]() {
+            m_waylandSlideManager->deleteLater();
+        });
     }
 
     return m_waylandSlideManager;
@@ -144,11 +145,9 @@
 
         m_waylandShadowManager = 
m_registry->createShadowManager(wmInterface.name, wmInterface.version, qApp);
 
-        connect(m_waylandShadowManager, 
&KWayland::Client::ShadowManager::removed, this,
-            [this] () {
-                m_waylandShadowManager->deleteLater();
-            }
-        );
+        connect(m_waylandShadowManager, 
&KWayland::Client::ShadowManager::removed, this, [this]() {
+            m_waylandShadowManager->deleteLater();
+        });
     }
 
     return m_waylandShadowManager;
@@ -175,11 +174,9 @@
         connect(m_wm, &PlasmaWindowManagement::showingDesktopChanged, 
KWindowSystem::self(), &KWindowSystem::showingDesktopChanged);
         qCDebug(KWAYLAND_KWS) << "Plasma Window Management interface bound";
 
-        connect(m_wm, &KWayland::Client::PlasmaWindowManagement::removed, this,
-            [this] () {
-                m_wm->deleteLater();
-            }
-        );
+        connect(m_wm, &KWayland::Client::PlasmaWindowManagement::removed, 
this, [this]() {
+            m_wm->deleteLater();
+        });
     }
 
     return m_wm;
@@ -199,23 +196,25 @@
     return m_waylandPlasmaShell;
 }
 
-KWayland::Client::ShmPool *WaylandIntegration::waylandShmPool()
+KWayland::Client::ShmPool *WaylandIntegration::createShmPool()
 {
-    if (!m_waylandShmPool && m_registry) {
+    if (m_registry) {
         const KWayland::Client::Registry::AnnouncedInterface wmInterface = 
m_registry->interface(KWayland::Client::Registry::Interface::Shm);
 
         if (wmInterface.name == 0) {
             return nullptr;
         }
 
-        m_waylandShmPool = m_registry->createShmPool(wmInterface.name, 
wmInterface.version, qApp);
-
-        connect(m_waylandShmPool, &KWayland::Client::ShmPool::removed, this,
-            [this] () {
-                m_waylandShmPool->deleteLater();
-            }
-        );
+        return m_registry->createShmPool(wmInterface.name, 
wmInterface.version, qApp);
     }
 
-    return m_waylandShmPool;
+    return nullptr;
+}
+
+WaylandXdgActivationV1 *WaylandIntegration::activation()
+{
+    if (!m_activation && m_registry && m_activationInterface.name) {
+        m_activation = new WaylandXdgActivationV1(*m_registry, 
m_activationInterface.name, m_activationInterface.version);
+    }
+    return m_activation;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/waylandintegration.h 
new/kwayland-integration-5.23.0/src/windowsystem/waylandintegration.h
--- old/kwayland-integration-5.22.5/src/windowsystem/waylandintegration.h       
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/waylandintegration.h       
2021-10-07 13:38:18.000000000 +0200
@@ -13,20 +13,21 @@
 
 namespace KWayland
 {
-    namespace Client
-    {
-        class BlurManager;
-        class ContrastManager;
-        class Compositor;
-        class ConnectionThread;
-        class PlasmaWindowManagement;
-        class PlasmaShell;
-        class Registry;
-        class ShadowManager;
-        class ShmPool;
-        class SlideManager;
-    }
+namespace Client
+{
+class BlurManager;
+class ContrastManager;
+class Compositor;
+class ConnectionThread;
+class PlasmaWindowManagement;
+class PlasmaShell;
+class Registry;
+class ShadowManager;
+class ShmPool;
+class SlideManager;
+}
 }
+class WaylandXdgActivationV1;
 
 class WaylandIntegration : public QObject
 {
@@ -45,7 +46,8 @@
     KWayland::Client::Compositor *waylandCompositor() const;
     KWayland::Client::PlasmaWindowManagement *plasmaWindowManagement();
     KWayland::Client::PlasmaShell *waylandPlasmaShell();
-    KWayland::Client::ShmPool *waylandShmPool();
+    KWayland::Client::ShmPool *createShmPool();
+    WaylandXdgActivationV1 *activation();
 
 private:
     QPointer<KWayland::Client::ConnectionThread> m_waylandConnection;
@@ -57,7 +59,11 @@
     QPointer<KWayland::Client::ShadowManager> m_waylandShadowManager;
     QPointer<KWayland::Client::PlasmaWindowManagement> m_wm;
     QPointer<KWayland::Client::PlasmaShell> m_waylandPlasmaShell;
-    QPointer<KWayland::Client::ShmPool> m_waylandShmPool;
+    QPointer<WaylandXdgActivationV1> m_activation;
+    struct {
+        quint32 name = 0;
+        quint32 version = 0;
+    } m_activationInterface;
 };
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/waylandxdgactivationv1.cpp 
new/kwayland-integration-5.23.0/src/windowsystem/waylandxdgactivationv1.cpp
--- old/kwayland-integration-5.22.5/src/windowsystem/waylandxdgactivationv1.cpp 
1970-01-01 01:00:00.000000000 +0100
+++ new/kwayland-integration-5.23.0/src/windowsystem/waylandxdgactivationv1.cpp 
2021-10-07 13:38:18.000000000 +0200
@@ -0,0 +1,37 @@
+/*
+    SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleix...@kde.org>
+
+    SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include "waylandxdgactivationv1_p.h"
+
+WaylandXdgActivationV1::WaylandXdgActivationV1(wl_registry *registry, uint32_t 
id, uint32_t availableVersion)
+    : QtWayland::xdg_activation_v1(registry, id, qMin(availableVersion, 1u))
+{
+}
+
+WaylandXdgActivationV1::~WaylandXdgActivationV1()
+{
+    Q_ASSERT(isInitialized());
+    destroy();
+}
+
+WaylandXdgActivationTokenV1 *
+WaylandXdgActivationV1::requestXdgActivationToken(wl_seat *seat, struct 
::wl_surface *surface, uint32_t serial, const QString &app_id)
+{
+    auto wl = get_activation_token();
+    auto provider = new WaylandXdgActivationTokenV1;
+    provider->init(wl);
+
+    if (surface)
+        provider->set_surface(surface);
+
+    if (!app_id.isEmpty())
+        provider->set_app_id(app_id);
+
+    if (seat)
+        provider->set_serial(serial, seat);
+    provider->commit();
+    return provider;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/waylandxdgactivationv1_p.h 
new/kwayland-integration-5.23.0/src/windowsystem/waylandxdgactivationv1_p.h
--- old/kwayland-integration-5.22.5/src/windowsystem/waylandxdgactivationv1_p.h 
1970-01-01 01:00:00.000000000 +0100
+++ new/kwayland-integration-5.23.0/src/windowsystem/waylandxdgactivationv1_p.h 
2021-10-07 13:38:18.000000000 +0200
@@ -0,0 +1,38 @@
+/*
+    SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleix...@kde.org>
+
+    SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#ifndef WAYLANDXDGACTIVATIONV1_P_H
+#define WAYLANDXDGACTIVATIONV1_P_H
+
+#include "qwayland-xdg-activation-v1.h"
+#include <QObject>
+
+class QWaylandSurface;
+
+class WaylandXdgActivationTokenV1 : public QObject, public 
QtWayland::xdg_activation_token_v1
+{
+    Q_OBJECT
+public:
+    void xdg_activation_token_v1_done(const QString &token) override
+    {
+        Q_EMIT done(token);
+    }
+
+Q_SIGNALS:
+    void failed();
+    void done(const QString &token);
+};
+
+class WaylandXdgActivationV1 : public QObject, public 
QtWayland::xdg_activation_v1
+{
+public:
+    WaylandXdgActivationV1(struct ::wl_registry *registry, uint32_t id, 
uint32_t availableVersion);
+    ~WaylandXdgActivationV1() override;
+
+    WaylandXdgActivationTokenV1 *requestXdgActivationToken(wl_seat *seat, 
struct ::wl_surface *surface, uint32_t serial, const QString &app_id);
+};
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/windoweffects.cpp 
new/kwayland-integration-5.23.0/src/windowsystem/windoweffects.cpp
--- old/kwayland-integration-5.22.5/src/windowsystem/windoweffects.cpp  
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/windoweffects.cpp  
2021-10-07 13:38:18.000000000 +0200
@@ -9,29 +9,30 @@
 #include "waylandintegration.h"
 
 #include <QDebug>
-#include <QWidget>
-#include <QGuiApplication>
 #include <QExposeEvent>
+#include <QGuiApplication>
+#include <QWidget>
 
-#include <KWayland/Client/connection_thread.h>
-#include <KWayland/Client/plasmawindowmanagement.h>
-#include <KWayland/Client/registry.h>
-#include <KWayland/Client/plasmashell.h>
-#include <KWayland/Client/compositor.h>
-#include <KWayland/Client/surface.h>
 #include <KWayland/Client/blur.h>
+#include <KWayland/Client/compositor.h>
+#include <KWayland/Client/connection_thread.h>
 #include <KWayland/Client/contrast.h>
+#include <KWayland/Client/plasmashell.h>
+#include <KWayland/Client/plasmawindowmanagement.h>
 #include <KWayland/Client/region.h>
+#include <KWayland/Client/registry.h>
 #include <KWayland/Client/slide.h>
+#include <KWayland/Client/surface.h>
 
 WindowEffects::WindowEffects()
-    : QObject(),
-      KWindowEffectsPrivate()
+    : QObject()
+    ,  KWindowEffectsPrivateV2()
 {
 }
 
 WindowEffects::~WindowEffects()
-{}
+{
+}
 
 QWindow *WindowEffects::windowForId(WId wid)
 {
@@ -71,7 +72,7 @@
 bool WindowEffects::eventFilter(QObject *watched, QEvent *event)
 {
     if (event->type() == QEvent::Expose) {
-        auto ee = static_cast<QExposeEvent*>(event);
+        auto ee = static_cast<QExposeEvent *>(event);
 
         if ((ee->region().isNull())) {
             return false;
@@ -262,6 +263,29 @@
     }
 }
 
+void WindowEffects::setBackgroundFrost(QWindow *window, QColor color, const 
QRegion &region)
+{
+    if (!WaylandIntegration::self()->waylandContrastManager()) {
+        return;
+    }
+
+    KWayland::Client::Surface *surface = 
KWayland::Client::Surface::fromWindow(window);
+    if (!surface) {
+        return;
+    }
+    if (!color.isValid()) {
+        
WaylandIntegration::self()->waylandContrastManager()->removeContrast(surface);
+        return;
+    }
+
+    auto backgroundContrast = 
WaylandIntegration::self()->waylandContrastManager()->createContrast(surface, 
surface);
+    
backgroundContrast->setRegion(WaylandIntegration::self()->waylandCompositor()->createRegion(region,
 nullptr));
+    backgroundContrast->setFrost(color);
+    backgroundContrast->commit();
+
+    WaylandIntegration::self()->waylandConnection()->flush();
+}
+
 #if KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE(5, 67)
 void WindowEffects::markAsDashboard(WId window)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/windoweffects.h 
new/kwayland-integration-5.23.0/src/windowsystem/windoweffects.h
--- old/kwayland-integration-5.22.5/src/windowsystem/windoweffects.h    
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/windoweffects.h    
2021-10-07 13:38:18.000000000 +0200
@@ -13,16 +13,16 @@
 
 namespace KWayland
 {
-    namespace Client
-    {
-        class BlurManager;
-        class ContrastManager;
-        class Compositor;
-        class ConnectionThread;
-    }
+namespace Client
+{
+class BlurManager;
+class ContrastManager;
+class Compositor;
+class ConnectionThread;
+}
 }
 
-class WindowEffects : public QObject, public KWindowEffectsPrivate
+class WindowEffects : public QObject, public KWindowEffectsPrivateV2
 {
     Q_OBJECT
 public:
@@ -47,8 +47,19 @@
 #endif
     void enableBlurBehind(WId winId, bool enable = true, const QRegion &region 
= QRegion()) override;
     void enableBlurBehind(QWindow *window, bool enable, const QRegion &region);
-    void enableBackgroundContrast(WId winId, bool enable = true, qreal 
contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion &region 
= QRegion()) override;
-    void enableBackgroundContrast(QWindow *window, bool enable = true, qreal 
contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion &region 
= QRegion());
+    void enableBackgroundContrast(WId winId,
+                                  bool enable = true,
+                                  qreal contrast = 1,
+                                  qreal intensity = 1,
+                                  qreal saturation = 1,
+                                  const QRegion &region = QRegion()) override;
+    void enableBackgroundContrast(QWindow *window,
+                                  bool enable = true,
+                                  qreal contrast = 1,
+                                  qreal intensity = 1,
+                                  qreal saturation = 1,
+                                  const QRegion &region = QRegion());
+    void setBackgroundFrost(QWindow *window, QColor color, const QRegion 
&region = QRegion()) override;
 #if KWINDOWSYSTEM_BUILD_DEPRECATED_SINCE(5, 67)
     void markAsDashboard(WId window) override;
 #endif
@@ -62,7 +73,6 @@
         QRegion region;
     };
     QHash<QWindow *, BackgroundContrastData> m_backgroundConstrastRegions;
-
 };
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/windowinfo.cpp 
new/kwayland-integration-5.23.0/src/windowsystem/windowinfo.cpp
--- old/kwayland-integration-5.22.5/src/windowsystem/windowinfo.cpp     
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/windowinfo.cpp     
2021-10-07 13:38:18.000000000 +0200
@@ -13,20 +13,19 @@
 
 #include <config-kwindowsystem.h>
 
-#include <QRect>
 #include <QGuiApplication>
+#include <QRect>
 
 #include <KWayland/Client/plasmashell.h>
 #include <KWayland/Client/surface.h>
 
-
 WindowInfo::WindowInfo(WId window, NET::Properties properties, 
NET::Properties2 properties2)
-    : KWindowInfoPrivate(window, properties, properties2),
-      m_valid(false),
-      m_properties(properties),
-      m_properties2(properties2),
-      m_surface(KWayland::Client::Surface::fromQtWinId(window)),
-      
m_plasmaShellSurface(KWayland::Client::PlasmaShellSurface::get(m_surface))
+    : KWindowInfoPrivate(window, properties, properties2)
+    , m_valid(false)
+    , m_properties(properties)
+    , m_properties2(properties2)
+    , m_surface(KWayland::Client::Surface::fromQtWinId(window))
+    , 
m_plasmaShellSurface(KWayland::Client::PlasmaShellSurface::get(m_surface))
 {
     m_valid = m_surface != nullptr && m_surface->isValid();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/windowinfo.h 
new/kwayland-integration-5.23.0/src/windowsystem/windowinfo.h
--- old/kwayland-integration-5.22.5/src/windowsystem/windowinfo.h       
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/windowinfo.h       
2021-10-07 13:38:18.000000000 +0200
@@ -7,17 +7,16 @@
 #ifndef WINDOWINFO_H
 #define WINDOWINFO_H
 
-#include <kwindowinfo.h>
 #include <KWindowSystem/private/kwindowinfo_p.h>
-
+#include <kwindowinfo.h>
 
 namespace KWayland
 {
-    namespace Client
-    {
-        class Surface;
-        class PlasmaShellSurface;
-    }
+namespace Client
+{
+class Surface;
+class PlasmaShellSurface;
+}
 }
 
 class WindowInfo : public KWindowInfoPrivate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/windowshadow.cpp 
new/kwayland-integration-5.23.0/src/windowsystem/windowshadow.cpp
--- old/kwayland-integration-5.22.5/src/windowsystem/windowshadow.cpp   
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/windowshadow.cpp   
2021-10-07 13:38:18.000000000 +0200
@@ -14,13 +14,16 @@
 #include <QDebug>
 #include <QExposeEvent>
 
+WindowShadowTile::WindowShadowTile() {}
+WindowShadowTile::~WindowShadowTile() {}
+
 bool WindowShadowTile::create()
 {
-    KWayland::Client::ShmPool *shmPool = 
WaylandIntegration::self()->waylandShmPool();
-    if (!shmPool) {
+    m_shmPool.reset(WaylandIntegration::self()->createShmPool());
+    if (!m_shmPool) {
         return false;
     }
-    buffer = shmPool->createBuffer(image);
+    buffer = m_shmPool->createBuffer(image);
     return true;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/windowshadow.h 
new/kwayland-integration-5.23.0/src/windowsystem/windowshadow.h
--- old/kwayland-integration-5.22.5/src/windowsystem/windowshadow.h     
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/windowshadow.h     
2021-10-07 13:38:18.000000000 +0200
@@ -14,12 +14,16 @@
 class WindowShadowTile final : public KWindowShadowTilePrivate
 {
 public:
+    WindowShadowTile();
+    ~WindowShadowTile();
+
     bool create() override;
     void destroy() override;
 
     static WindowShadowTile *get(const KWindowShadowTile *tile);
 
     KWayland::Client::Buffer::Ptr buffer;
+    QScopedPointer<KWayland::Client::ShmPool> m_shmPool;
 };
 
 class WindowShadow final : public QObject, public KWindowShadowPrivate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/windowsystem.cpp 
new/kwayland-integration-5.23.0/src/windowsystem/windowsystem.cpp
--- old/kwayland-integration-5.22.5/src/windowsystem/windowsystem.cpp   
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/windowsystem.cpp   
2021-10-07 13:38:18.000000000 +0200
@@ -4,41 +4,89 @@
     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR 
LicenseRef-KDE-Accepted-LGPL
 */
 #include "windowsystem.h"
-#include "waylandintegration.h"
 #include "logging.h"
+#include "waylandintegration.h"
+#include "waylandxdgactivationv1_p.h"
 
 #include <KWindowSystem/KWindowSystem>
 
 #include <KWayland/Client/connection_thread.h>
+#include <KWayland/Client/plasmashell.h>
 #include <KWayland/Client/plasmawindowmanagement.h>
 #include <KWayland/Client/registry.h>
-#include <KWayland/Client/plasmashell.h>
+#include <KWayland/Client/seat.h>
 #include <KWayland/Client/surface.h>
 
 #include <QPixmap>
 #include <QPoint>
 #include <QString>
+#include <QWindow>
+#include <private/qwaylanddisplay_p.h>
+#include <private/qwaylandinputdevice_p.h>
+#include <private/qwaylandwindow_p.h>
 
 using namespace KWayland::Client;
 
 WindowSystem::WindowSystem()
     : QObject()
-    , KWindowSystemPrivate()
+    , KWindowSystemPrivateV2()
+    , m_lastToken(qEnvironmentVariable("XDG_ACTIVATION_TOKEN"))
 {
 }
 
 void WindowSystem::activateWindow(WId win, long int time)
 {
-    Q_UNUSED(win)
-    Q_UNUSED(time)
-    qCDebug(KWAYLAND_KWS) << "This plugin does not support force activating 
windows";
+    Q_UNUSED(time);
+    Surface *s = Surface::fromQtWinId(win);
+    if (!s) {
+        return;
+    }
+    WaylandXdgActivationV1 *activation = 
WaylandIntegration::self()->activation();
+    if (!activation) {
+        return;
+    }
+    activation->activate(m_lastToken, *s);
 }
 
 void WindowSystem::forceActiveWindow(WId win, long int time)
 {
-    Q_UNUSED(win)
-    Q_UNUSED(time)
-    qCDebug(KWAYLAND_KWS) << "This plugin does not support force activating 
windows";
+    activateWindow(win, time);
+}
+
+void WindowSystem::requestToken(QWindow *window, uint32_t serial, const 
QString &app_id)
+{
+    Surface *surface = Surface::fromWindow(window);
+    wl_surface *wlSurface = surface ? static_cast<wl_surface *>(*surface) : 
nullptr;
+    WaylandXdgActivationV1 *activation = 
WaylandIntegration::self()->activation();
+    if (!activation) {
+        Q_EMIT KWindowSystem::self()->xdgActivationTokenArrived(serial, {});
+        return;
+    }
+
+    auto waylandWindow = window ? dynamic_cast<QtWaylandClient::QWaylandWindow 
*>(window->handle()) : nullptr;
+    auto seat = waylandWindow ? 
waylandWindow->display()->defaultInputDevice()->wl_seat() : nullptr;
+    auto tokenReq = activation->requestXdgActivationToken(seat, wlSurface, 
serial, app_id);
+    connect(tokenReq, &WaylandXdgActivationTokenV1::failed, 
KWindowSystem::self(), [serial, app_id]() {
+        Q_EMIT KWindowSystem::self()->xdgActivationTokenArrived(serial, {});
+    });
+    connect(tokenReq, &WaylandXdgActivationTokenV1::done, 
KWindowSystem::self(), [serial](const QString &token) {
+        Q_EMIT KWindowSystem::self()->xdgActivationTokenArrived(serial, token);
+    });
+}
+
+void WindowSystem::setCurrentToken(const QString &token)
+{
+    m_lastToken = token;
+}
+
+quint32 WindowSystem::lastInputSerial(QWindow *window)
+{
+    auto waylandWindow = window ? dynamic_cast<QtWaylandClient::QWaylandWindow 
*>(window->handle()) : nullptr;
+    if (!waylandWindow) {
+        // Should never get here
+        return 0;
+    }
+    return waylandWindow->display()->lastInputSerial();
 }
 
 WId WindowSystem::activeWindow()
@@ -192,7 +240,19 @@
     qCDebug(KWAYLAND_KWS) << "This plugin does not support virtual desktops";
 }
 
-void WindowSystem::setExtendedStrut(WId win, int left_width, int left_start, 
int left_end, int right_width, int right_start, int right_end, int top_width, 
int top_start, int top_end, int bottom_width, int bottom_start, int bottom_end)
+void WindowSystem::setExtendedStrut(WId win,
+                                    int left_width,
+                                    int left_start,
+                                    int left_end,
+                                    int right_width,
+                                    int right_start,
+                                    int right_end,
+                                    int top_width,
+                                    int top_start,
+                                    int top_end,
+                                    int bottom_width,
+                                    int bottom_start,
+                                    int bottom_end)
 {
     Q_UNUSED(win)
     Q_UNUSED(left_width)
@@ -435,7 +495,7 @@
     return 
WaylandIntegration::self()->plasmaWindowManagement()->isShowingDesktop();
 }
 
-QList< WId > WindowSystem::stackingOrder()
+QList<WId> WindowSystem::stackingOrder()
 {
     qCDebug(KWAYLAND_KWS) << "This plugin does not support getting windows";
     return QList<WId>();
@@ -464,12 +524,12 @@
     return 0;
 }
 
-QList< WId > WindowSystem::windows()
+QList<WId> WindowSystem::windows()
 {
     return stackingOrder();
 }
 
-QRect WindowSystem::workArea(const QList< WId > &excludes, int desktop)
+QRect WindowSystem::workArea(const QList<WId> &excludes, int desktop)
 {
     Q_UNUSED(excludes)
     Q_UNUSED(desktop)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kwayland-integration-5.22.5/src/windowsystem/windowsystem.h 
new/kwayland-integration-5.23.0/src/windowsystem/windowsystem.h
--- old/kwayland-integration-5.22.5/src/windowsystem/windowsystem.h     
2021-08-31 13:40:16.000000000 +0200
+++ new/kwayland-integration-5.23.0/src/windowsystem/windowsystem.h     
2021-10-07 13:38:18.000000000 +0200
@@ -18,7 +18,7 @@
 }
 }
 
-class WindowSystem : public QObject, public KWindowSystemPrivate
+class WindowSystem : public QObject, public KWindowSystemPrivateV2
 {
     Q_OBJECT
 public:
@@ -29,6 +29,9 @@
     void activateWindow(WId win, long time) override;
     void forceActiveWindow(WId win, long time) override;
     void demandAttention(WId win, bool set) override;
+    void requestToken(QWindow *win, uint32_t serial, const QString &app_id) 
override;
+    quint32 lastInputSerial(QWindow *window) override;
+    void setCurrentToken(const QString &token) override;
     bool compositingActive() override;
     int currentDesktop() override;
     int numberOfDesktops() override;
@@ -57,9 +60,19 @@
     bool showingDesktop() override;
     void setShowingDesktop(bool showing) override;
     void setUserTime(WId win, long time) override;
-    void setExtendedStrut(WId win, int left_width, int left_start, int 
left_end,
-                          int right_width, int right_start, int right_end, int 
top_width, int top_start, int top_end,
-                          int bottom_width, int bottom_start, int bottom_end) 
override;
+    void setExtendedStrut(WId win,
+                          int left_width,
+                          int left_start,
+                          int left_end,
+                          int right_width,
+                          int right_start,
+                          int right_end,
+                          int top_width,
+                          int top_start,
+                          int top_end,
+                          int bottom_width,
+                          int bottom_start,
+                          int bottom_end) override;
     void setStrut(WId win, int left, int right, int top, int bottom) override;
     bool allowedActionsSupported() override;
     QString readNameProperty(WId window, unsigned long atom) override;
@@ -70,11 +83,11 @@
     int viewportWindowToDesktop(const QRect &r) override;
     QPoint desktopToViewport(int desktop, bool absolute) override;
     QPoint constrainViewportRelativePosition(const QPoint &pos) override;
-
     void connectNotify(const QMetaMethod &signal) override;
 
 private:
     KWayland::Client::PlasmaShell *m_waylandPlasmaShell = nullptr;
+    QString m_lastToken;
 };
 
 #endif

++++++ plasma.keyring ++++++
Binary files /var/tmp/diff_new_pack.o1zLa4/_old and 
/var/tmp/diff_new_pack.o1zLa4/_new differ

Reply via email to