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 ®ion) +{ + 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 ®ion = QRegion()) override; void enableBlurBehind(QWindow *window, bool enable, const QRegion ®ion); - void enableBackgroundContrast(WId winId, bool enable = true, qreal contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion ®ion = QRegion()) override; - void enableBackgroundContrast(QWindow *window, bool enable = true, qreal contrast = 1, qreal intensity = 1, qreal saturation = 1, const QRegion ®ion = QRegion()); + void enableBackgroundContrast(WId winId, + bool enable = true, + qreal contrast = 1, + qreal intensity = 1, + qreal saturation = 1, + const QRegion ®ion = QRegion()) override; + void enableBackgroundContrast(QWindow *window, + bool enable = true, + qreal contrast = 1, + qreal intensity = 1, + qreal saturation = 1, + const QRegion ®ion = QRegion()); + void setBackgroundFrost(QWindow *window, QColor color, const QRegion ®ion = 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