Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kglobalacceld6 for openSUSE:Factory 
checked in at 2025-10-22 12:11:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kglobalacceld6 (Old)
 and      /work/SRC/openSUSE:Factory/.kglobalacceld6.new.18484 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kglobalacceld6"

Wed Oct 22 12:11:45 2025 rev:30 rq:1312754 version:6.5.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kglobalacceld6/kglobalacceld6.changes    
2025-09-11 14:38:11.388877536 +0200
+++ /work/SRC/openSUSE:Factory/.kglobalacceld6.new.18484/kglobalacceld6.changes 
2025-10-22 12:12:27.289718674 +0200
@@ -1,0 +2,38 @@
+Thu Oct 16 18:13:01 UTC 2025 - Fabian Vogt <[email protected]>
+
+- Update to 6.5.0:
+  * New bugfix release
+  * For more details see https://kde.org/announcements/plasma/6/6.5.0
+- Changes since 6.4.91:
+  * Update version for new release 6.5.0
+
+-------------------------------------------------------------------
+Thu Oct  2 14:45:07 UTC 2025 - Fabian Vogt <[email protected]>
+
+- Update to 6.4.91:
+  * New bugfix release
+  * For more details see https://kde.org/announcements/plasma/6/6.4.91
+- Changes since 6.4.90:
+  * Update version for new release 6.4.91
+
+-------------------------------------------------------------------
+Tue Sep 23 06:38:50 UTC 2025 - Fabian Vogt <[email protected]>
+
+- Update to 6.4.90:
+  * New feature release
+  * For more details see https://kde.org/announcements/plasma/6/6.4.90
+- Changes since 6.4.5:
+  * Update version for new release 6.4.90
+  * Bump kf ecm_set_disabled_deprecation_versions. Make sure that it compiles 
fine without kf 6.16 deprecated methods
+  * Drop KGlobalAccelInterface::setEnabled
+  * Expose KGlobalAccelInterface getter
+  * Make GlobalShortcutsRegistry not a singleton
+  * Port to ecm_qt_declare_logging_category
+  * Store the actual type and no need for invokeMethod anymore
+  * Allow distinguishing shortcut press from shortcut repeat
+  * Make Component::loadSettings() take config by a const reference
+  * Remove global shortcut contexts for desktop files
+  * Fix losing shortcuts when updating the system
+  * update version for new release
+
+-------------------------------------------------------------------

Old:
----
  kglobalacceld-6.4.5.tar.xz
  kglobalacceld-6.4.5.tar.xz.sig

New:
----
  kglobalacceld-6.5.0.tar.xz
  kglobalacceld-6.5.0.tar.xz.sig

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

Other differences:
------------------
++++++ kglobalacceld6.spec ++++++
--- /var/tmp/diff_new_pack.cM6RIc/_old  2025-10-22 12:12:29.173798109 +0200
+++ /var/tmp/diff_new_pack.cM6RIc/_new  2025-10-22 12:12:29.185798615 +0200
@@ -16,8 +16,8 @@
 #
 
 
-%global kf6_version 6.14.0
-%define qt6_version 6.8.0
+%define kf6_version 6.18.0
+%define qt6_version 6.9.0
 
 %define rname kglobalacceld
 %bcond_without released
@@ -26,14 +26,14 @@
 # Latest ABI-stable Plasma (e.g. 6.0 in KF6, but 6.0.80 in KUF)
 %{!?_plasma6_version: %define _plasma6_version %(echo %{_plasma6_bugfix} | awk 
-F. '{print $1"."$2}')}
 Name:           kglobalacceld6
-Version:        6.4.5
+Version:        6.5.0
 Release:        0
 Summary:        Global keyboard shortcut daemon
 License:        LGPL-2.0-or-later
 URL:            https://www.kde.org
-Source:         
https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz
+Source:         %{rname}-%{version}.tar.xz
 %if %{with released}
-Source1:        
https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz.sig
+Source1:        %{rname}-%{version}.tar.xz.sig
 Source2:        plasma.keyring
 %endif
 %if 0%{?suse_version} == 1500
@@ -113,6 +113,7 @@
 
 %files
 %{_kf6_configdir}/autostart/kglobalacceld.desktop
+%{_kf6_debugdir}/kglobalacceld.categories
 %dir %{_kf6_plugindir}/org.kde.kglobalacceld.platforms
 %{_kf6_plugindir}/org.kde.kglobalacceld.platforms/KGlobalAccelDXcb.so
 %{_libexecdir}/kglobalacceld

++++++ kglobalacceld-6.4.5.tar.xz -> kglobalacceld-6.5.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/CMakeLists.txt 
new/kglobalacceld-6.5.0/CMakeLists.txt
--- old/kglobalacceld-6.4.5/CMakeLists.txt      2025-09-09 10:25:13.000000000 
+0200
+++ new/kglobalacceld-6.5.0/CMakeLists.txt      2025-10-16 11:05:15.000000000 
+0200
@@ -2,10 +2,10 @@
 
 project(kglobalacceld)
 
-set(PROJECT_VERSION "6.4.5")
+set(PROJECT_VERSION "6.5.0")
 
-set(QT_MIN_VERSION "6.8.0")
-set(KF6_MIN_VERSION "6.14.0")
+set(QT_MIN_VERSION "6.9.0")
+set(KF6_MIN_VERSION "6.18.0")
 
 set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -78,8 +78,8 @@
                         SOVERSION 0)
 
 ecm_set_disabled_deprecation_versions(
-    QT 6.8.0
-    KF 6.12.0
+    QT 6.9.0
+    KF 6.16.0
 )
 
 add_subdirectory(src)
@@ -109,6 +109,12 @@
 install(FILES ${kglobalaccel_version_header}
         DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KGlobalAccel COMPONENT Devel)
 
+ecm_qt_install_logging_categories(
+    EXPORT KGLOBALACCELD
+    FILE kglobalacceld.categories
+    DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
+)
+
 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/autotests/dummy.cpp 
new/kglobalacceld-6.5.0/autotests/dummy.cpp
--- old/kglobalacceld-6.4.5/autotests/dummy.cpp 2025-09-09 10:25:13.000000000 
+0200
+++ new/kglobalacceld-6.5.0/autotests/dummy.cpp 2025-10-16 11:05:15.000000000 
+0200
@@ -20,6 +20,7 @@
 KGlobalAccelImpl::KGlobalAccelImpl(QObject *parent)
     : KGlobalAccelInterface(parent)
 {
+    s_interface = this;
 }
 
 KGlobalAccelImpl::~KGlobalAccelImpl()
@@ -33,19 +34,9 @@
     return true;
 }
 
-void KGlobalAccelImpl::setEnabled(bool enable)
+bool KGlobalAccelImpl::checkKeyEvent(int keyQt, ShortcutKeyState state)
 {
-    s_interface = enable ? this : nullptr;
-}
-
-bool KGlobalAccelImpl::checkKeyPressed(int keyQt)
-{
-    return keyPressed(keyQt);
-}
-
-bool KGlobalAccelImpl::checkKeyReleased(int keyQt)
-{
-    return keyReleased(keyQt);
+    return keyEvent(keyQt, state);
 }
 
 bool KGlobalAccelImpl::checkPointerPressed(Qt::MouseButtons button)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/autotests/dummy.h 
new/kglobalacceld-6.5.0/autotests/dummy.h
--- old/kglobalacceld-6.4.5/autotests/dummy.h   2025-09-09 10:25:13.000000000 
+0200
+++ new/kglobalacceld-6.5.0/autotests/dummy.h   2025-10-16 11:05:15.000000000 
+0200
@@ -42,14 +42,10 @@
      */
     bool grabKey(int key, bool grab) override;
 
-    /// Enable/disable all shortcuts. There will not be any grabbed shortcuts 
at this point.
-    void setEnabled(bool) override;
-
     static KGlobalAccelImpl *instance();
 
 public Q_SLOTS:
-    bool checkKeyPressed(int keyQt);
-    bool checkKeyReleased(int keyQt);
+    bool checkKeyEvent(int keyQt, ShortcutKeyState state);
     bool checkPointerPressed(Qt::MouseButtons button);
     bool checkAxisTriggered(int axis);
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/autotests/shortcutstest.cpp 
new/kglobalacceld-6.5.0/autotests/shortcutstest.cpp
--- old/kglobalacceld-6.4.5/autotests/shortcutstest.cpp 2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/autotests/shortcutstest.cpp 2025-10-16 
11:05:15.000000000 +0200
@@ -26,7 +26,7 @@
 
 private:
     std::unique_ptr<KGlobalAccelD> m_globalacceld;
-    KGlobalAccelInterface *m_interface;
+    KGlobalAccelImpl *m_interface; // implementation of KGlobalAccelInterface 
* for this test
     KGlobalAccel *m_globalaccel;
 };
 
@@ -155,19 +155,16 @@
     for (const auto &event : events) {
         switch (event.first) {
         case QEvent::KeyPress:
-            QMetaObject::invokeMethod(m_interface, "checkKeyPressed", 
Qt::DirectConnection, Q_ARG(int, event.second));
+            m_interface->checkKeyEvent(event.second, 
ShortcutKeyState::Pressed);
             break;
         case QEvent::KeyRelease:
-            QMetaObject::invokeMethod(m_interface, "checkKeyReleased", 
Qt::DirectConnection, Q_ARG(int, event.second));
+            m_interface->checkKeyEvent(event.second, 
ShortcutKeyState::Released);
             break;
         case QEvent::MouseButtonPress:
-            QMetaObject::invokeMethod(m_interface,
-                                      "checkPointerPressed",
-                                      Qt::DirectConnection,
-                                      Q_ARG(Qt::MouseButtons, 
static_cast<Qt::MouseButtons>(event.second)));
+            
m_interface->checkPointerPressed(static_cast<Qt::MouseButtons>(event.second));
             break;
         case QEvent::Wheel:
-            QMetaObject::invokeMethod(m_interface, "checkAxisTriggered", 
Qt::DirectConnection, Q_ARG(int, event.second));
+            m_interface->checkAxisTriggered(event.second);
             break;
         default:
             qFatal("Unknown event type");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/CMakeLists.txt 
new/kglobalacceld-6.5.0/src/CMakeLists.txt
--- old/kglobalacceld-6.4.5/src/CMakeLists.txt  2025-09-09 10:25:13.000000000 
+0200
+++ new/kglobalacceld-6.5.0/src/CMakeLists.txt  2025-10-16 11:05:15.000000000 
+0200
@@ -3,7 +3,6 @@
     kglobalaccel_interface.cpp
     kserviceactioncomponent.cpp
     component.cpp
-    logging.cpp
     globalshortcut.cpp
     globalshortcutsregistry.cpp
     globalshortcutcontext.cpp
@@ -26,6 +25,15 @@
     EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
 )
 
+ecm_qt_declare_logging_category(KGlobalAccelD
+   HEADER logging.h
+   IDENTIFIER KGLOBALACCELD
+   CATEGORY_NAME kf.globalaccel.kglobalacceld
+   DEFAULT_SEVERITY Warning
+   DESCRIPTION "KGlobalAccelD"
+   EXPORT KGLOBALACCELD
+   )
+
 target_include_directories(KGlobalAccelD INTERFACE 
"$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR}/KGlobalAccelD>")
 
 target_link_libraries(KGlobalAccelD
@@ -52,7 +60,7 @@
     target_link_libraries(KGlobalAccelD PUBLIC Qt6::GuiPrivate) # 
qtx11extras_p.h
 endif()
 
-add_executable(kglobalacceld main.cpp logging.cpp)
+add_executable(kglobalacceld main.cpp)
 
 target_include_directories(kglobalacceld PRIVATE ${CMAKE_BINARY_DIR})
 
@@ -70,6 +78,7 @@
 
 install(FILES
   ${CMAKE_CURRENT_BINARY_DIR}/kglobalacceld_export.h
+  shortcutkeystate.h
   kglobalacceld.h
   kglobalaccel_interface.h
   DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KGlobalAccelD/ COMPONENT Devel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/component.cpp 
new/kglobalacceld-6.5.0/src/component.cpp
--- old/kglobalacceld-6.4.5/src/component.cpp   2025-09-09 10:25:13.000000000 
+0200
+++ new/kglobalacceld-6.5.0/src/component.cpp   2025-10-16 11:05:15.000000000 
+0200
@@ -9,7 +9,7 @@
 #include "globalshortcutcontext.h"
 #include "globalshortcutsregistry.h"
 #include "kglobalaccel_interface.h"
-#include "logging_p.h"
+#include "logging.h"
 #include <config-kglobalaccel.h>
 
 #include <QKeySequence>
@@ -49,10 +49,10 @@
     return ret;
 }
 
-Component::Component(const QString &uniqueName, const QString &friendlyName)
+Component::Component(const QString &uniqueName, const QString &friendlyName, 
GlobalShortcutsRegistry *registry)
     : _uniqueName(uniqueName)
     , _friendlyName(friendlyName)
-    , _registry(GlobalShortcutsRegistry::self())
+    , _registry(registry)
 {
     // Make sure we do no get uniquenames still containing the context
     Q_ASSERT(uniqueName.indexOf(QLatin1Char('|')) == -1);
@@ -171,7 +171,7 @@
     }
 }
 
-void Component::emitGlobalShortcutPressed(const GlobalShortcut &shortcut)
+void Component::emitGlobalShortcutEvent(const GlobalShortcut &shortcut, 
ShortcutKeyState state)
 {
 #if HAVE_X11
     // pass X11 timestamp
@@ -184,30 +184,24 @@
         return;
     }
 
-    Q_EMIT 
globalShortcutPressed(shortcut.context()->component()->uniqueName(), 
shortcut.uniqueName(), timestamp);
-}
-
-void Component::emitGlobalShortcutReleased(const GlobalShortcut &shortcut)
-{
-#if HAVE_X11
-    // pass X11 timestamp
-    const long timestamp = QX11Info::appTime();
-#else
-    const long timestamp = 0;
-#endif
-
-    if (shortcut.context()->component() != this) {
-        return;
+    switch (state) {
+    case ShortcutKeyState::Pressed:
+        Q_EMIT 
globalShortcutPressed(shortcut.context()->component()->uniqueName(), 
shortcut.uniqueName(), timestamp);
+        break;
+    case ShortcutKeyState::Repeated:
+        Q_EMIT 
globalShortcutRepeated(shortcut.context()->component()->uniqueName(), 
shortcut.uniqueName(), timestamp);
+        break;
+    case ShortcutKeyState::Released:
+        Q_EMIT 
globalShortcutReleased(shortcut.context()->component()->uniqueName(), 
shortcut.uniqueName(), timestamp);
+        break;
     }
-
-    Q_EMIT 
globalShortcutReleased(shortcut.context()->component()->uniqueName(), 
shortcut.uniqueName(), timestamp);
 }
 
 void Component::invokeShortcut(const QString &shortcutName, const QString 
&context)
 {
     GlobalShortcut *shortcut = getShortcutByName(shortcutName, context);
     if (shortcut) {
-        emitGlobalShortcutPressed(*shortcut);
+        emitGlobalShortcutEvent(*shortcut, ShortcutKeyState::Pressed);
     }
 }
 
@@ -279,7 +273,7 @@
 Component::registerShortcut(const QString &uniqueName, const QString 
&friendlyName, const QString &shortcutString, const QString 
&defaultShortcutString)
 {
     // The shortcut will register itself with us
-    GlobalShortcut *shortcut = new GlobalShortcut(uniqueName, friendlyName, 
currentContext());
+    GlobalShortcut *shortcut = new GlobalShortcut(uniqueName, friendlyName, 
currentContext(), _registry);
 
     const QList<QKeySequence> keys = keysFromString(shortcutString);
     shortcut->setDefaultKeys(keysFromString(defaultShortcutString));
@@ -299,7 +293,7 @@
     return shortcut;
 }
 
-void Component::loadSettings(KConfigGroup &configGroup)
+void Component::loadSettings(const KConfigGroup &configGroup)
 {
     // GlobalShortcutsRegistry::loadSettings handles contexts.
     const auto listKeys = configGroup.keyList();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/component.h 
new/kglobalacceld-6.5.0/src/component.h
--- old/kglobalacceld-6.4.5/src/component.h     2025-09-09 10:25:13.000000000 
+0200
+++ new/kglobalacceld-6.5.0/src/component.h     2025-10-16 11:05:15.000000000 
+0200
@@ -16,6 +16,8 @@
 #include <QHash>
 #include <QObject>
 
+#include "shortcutkeystate.h"
+
 class GlobalShortcut;
 class GlobalShortcutContext;
 class GlobalShortcutsRegistry;
@@ -85,7 +87,7 @@
     bool isShortcutAvailable(const QKeySequence &key, const QString 
&component, const QString &context) const;
 
     //! Load the settings from config group @p config
-    virtual void loadSettings(KConfigGroup &config);
+    virtual void loadSettings(const KConfigGroup &config);
 
     //! Sets the human readable name for this component.
     void setFriendlyName(const QString &);
@@ -102,7 +104,7 @@
 
     //! Constructs a component. This is a private constructor, to create a 
component
     //! use GlobalShortcutsRegistry::self()->createComponent().
-    Component(const QString &uniqueName, const QString &friendlyName);
+    Component(const QString &uniqueName, const QString &friendlyName, 
GlobalShortcutsRegistry *registry);
 
     /**
      * Create a new globalShortcut by its name
@@ -154,8 +156,7 @@
     //! Returns the shortcut contexts available for the component.
     Q_SCRIPTABLE QStringList getShortcutContexts() const;
 
-    virtual void emitGlobalShortcutPressed(const GlobalShortcut &shortcut);
-    virtual void emitGlobalShortcutReleased(const GlobalShortcut &shortcut);
+    virtual void emitGlobalShortcutEvent(const GlobalShortcut &shortcut, 
ShortcutKeyState state);
 
     Q_SCRIPTABLE void invokeShortcut(const QString &shortcutName, const 
QString &context = QStringLiteral("default"));
 
@@ -164,6 +165,9 @@
     //! Signals that a action for this component was triggered
     Q_SCRIPTABLE void globalShortcutPressed(const QString &componentUnique, 
const QString &shortcutUnique, qlonglong timestamp);
 
+    //! Signals that a action for this component was held
+    Q_SCRIPTABLE void globalShortcutRepeated(const QString &componentUnique, 
const QString &shortcutUnique, qlonglong timestamp);
+
     //! Signals that a action for this component is not triggered anymore
     Q_SCRIPTABLE void globalShortcutReleased(const QString &componentUnique, 
const QString &shortcutUnique, qlonglong timestamp);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/globalshortcut.cpp 
new/kglobalacceld-6.5.0/src/globalshortcut.cpp
--- old/kglobalacceld-6.4.5/src/globalshortcut.cpp      2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/globalshortcut.cpp      2025-10-16 
11:05:15.000000000 +0200
@@ -11,20 +11,15 @@
 #include "component.h"
 #include "globalshortcutcontext.h"
 #include "globalshortcutsregistry.h"
-#include "logging_p.h"
+#include "logging.h"
 
 #include <QKeySequence>
 
-GlobalShortcut::GlobalShortcut()
-    : GlobalShortcut(QString{}, QString{}, nullptr)
-{
-}
-
-GlobalShortcut::GlobalShortcut(const QString &uniqueName, const QString 
&friendlyName, GlobalShortcutContext *context)
+GlobalShortcut::GlobalShortcut(const QString &uniqueName, const QString 
&friendlyName, GlobalShortcutContext *context, GlobalShortcutsRegistry 
*registry)
     : _isPresent(false)
     , _isRegistered(false)
     , _isFresh(true)
-    , _registry(GlobalShortcutsRegistry::self())
+    , _registry(registry)
     , _context(context)
     , _uniqueName(uniqueName)
     , _friendlyName(friendlyName)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/globalshortcut.h 
new/kglobalacceld-6.5.0/src/globalshortcut.h
--- old/kglobalacceld-6.4.5/src/globalshortcut.h        2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/globalshortcut.h        2025-10-16 
11:05:15.000000000 +0200
@@ -26,8 +26,7 @@
 class GlobalShortcut
 {
 public:
-    GlobalShortcut(const QString &uniqueName, const QString &friendlyName, 
GlobalShortcutContext *context);
-    GlobalShortcut();
+    GlobalShortcut(const QString &uniqueName, const QString &friendlyName, 
GlobalShortcutContext *context, GlobalShortcutsRegistry *registry);
 
     ~GlobalShortcut();
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/globalshortcutsregistry.cpp 
new/kglobalacceld-6.5.0/src/globalshortcutsregistry.cpp
--- old/kglobalacceld-6.4.5/src/globalshortcutsregistry.cpp     2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/globalshortcutsregistry.cpp     2025-10-16 
11:05:15.000000000 +0200
@@ -12,7 +12,7 @@
 #include "kglobalaccel_interface.h"
 #include "kglobalshortcutinfo_p.h"
 #include "kserviceactioncomponent.h"
-#include "logging_p.h"
+#include "logging.h"
 #include "sequencehelpers_p.h"
 #include <config-kglobalaccel.h>
 
@@ -277,10 +277,6 @@
     migrateKHotkeys();
     migrateConfig();
 
-    if (_manager) {
-        _manager->setEnabled(true);
-    }
-
     // ksycoca database can change while refreshServices() prunes orphan 
shortcuts. If that happens,
     // call refreshServices() as a followup in the next event loop cycle.
     connect(KSycoca::self(), &KSycoca::databaseChanged, this, 
&GlobalShortcutsRegistry::scheduleRefreshServices);
@@ -295,8 +291,6 @@
     m_components.clear();
 
     if (_manager) {
-        _manager->setEnabled(false);
-
         // Ungrab all keys. We don't go over GlobalShortcuts because
         // GlobalShortcutsRegistry::self() doesn't work anymore.
         const auto listKeys = _active_keys.keys();
@@ -405,12 +399,6 @@
     });
 }
 
-Q_GLOBAL_STATIC(GlobalShortcutsRegistry, _self)
-GlobalShortcutsRegistry *GlobalShortcutsRegistry::self()
-{
-    return _self;
-}
-
 static void correctKeyEvent(int &keyQt)
 {
     int keyMod = keyQt & Qt::KeyboardModifierMask;
@@ -435,34 +423,61 @@
     keyQt = keySym | keyMod;
 }
 
-bool GlobalShortcutsRegistry::keyPressed(int keyQt)
+bool GlobalShortcutsRegistry::keyEvent(int keyQt, ShortcutKeyState state)
 {
     correctKeyEvent(keyQt);
     const int key = keyQt & ~Qt::KeyboardModifierMask;
     const Qt::KeyboardModifiers modifiers = 
static_cast<Qt::KeyboardModifiers>(keyQt & Qt::KeyboardModifierMask);
+    bool handled = false;
     switch (key) {
     case 0:
         // Invalid key code
         m_state = Normal;
-        _active_sequence = QKeySequence();
-        return false;
+        if (state != ShortcutKeyState::Released) {
+            _active_sequence = QKeySequence();
+        }
+        break;
     case Qt::Key_Shift:
     case Qt::Key_Control:
     case Qt::Key_Alt:
     case Qt::Key_Super_L:
     case Qt::Key_Super_R:
     case Qt::Key_Meta:
-        m_state = PressingModifierOnly;
-        m_currentModifiers = Utils::keyToModifier(key) | modifiers;
-        return false;
+        if (state == ShortcutKeyState::Released) {
+            if (m_state == PressingModifierOnly) {
+                m_state = ReleasingModifierOnly;
+                handled = processKey(m_currentModifiers, 
ShortcutKeyState::Pressed);
+            }
+            m_currentModifiers = modifiers & ~Utils::keyToModifier(key);
+            if (m_state == ReleasingModifierOnly && !m_currentModifiers) {
+                m_state = Normal;
+            }
+        } else {
+            m_state = PressingModifierOnly;
+            m_currentModifiers = Utils::keyToModifier(key) | modifiers;
+            return false;
+        }
+        break;
     default:
         m_state = Normal;
-        m_currentModifiers = modifiers;
-        return processKey(keyQt);
+        if (state != ShortcutKeyState::Released) {
+            m_currentModifiers = modifiers;
+            handled = processKey(keyQt, state);
+        }
+        break;
     }
+
+    if (state == ShortcutKeyState::Released) {
+        if (m_lastShortcut) {
+            
m_lastShortcut->context()->component()->emitGlobalShortcutEvent(*m_lastShortcut,
 state);
+            m_lastShortcut = nullptr;
+        }
+    }
+
+    return handled;
 }
 
-bool GlobalShortcutsRegistry::processKey(int keyQt)
+bool GlobalShortcutsRegistry::processKey(int keyQt, ShortcutKeyState state)
 {
     int keys[maxSequenceLength] = {0, 0, 0, 0};
     int count = _active_sequence.count();
@@ -528,54 +543,16 @@
     data.append(shortcut->friendlyName());
 
     if (m_lastShortcut && m_lastShortcut != shortcut) {
-        
m_lastShortcut->context()->component()->emitGlobalShortcutReleased(*m_lastShortcut);
+        
m_lastShortcut->context()->component()->emitGlobalShortcutEvent(*m_lastShortcut,
 ShortcutKeyState::Released);
     }
 
     // Invoke the action
-    shortcut->context()->component()->emitGlobalShortcutPressed(*shortcut);
+    shortcut->context()->component()->emitGlobalShortcutEvent(*shortcut, 
state);
     m_lastShortcut = shortcut;
 
     return true;
 }
 
-bool GlobalShortcutsRegistry::keyReleased(int keyQt)
-{
-    correctKeyEvent(keyQt);
-    bool handled = false;
-    const int key = keyQt & ~Qt::KeyboardModifierMask;
-    const Qt::KeyboardModifiers modifiers = 
static_cast<Qt::KeyboardModifiers>(keyQt & Qt::KeyboardModifierMask);
-    switch (key) {
-    case 0:
-        // Invalid key code
-        m_state = Normal;
-        break;
-    case Qt::Key_Super_L:
-    case Qt::Key_Super_R:
-    case Qt::Key_Meta:
-    case Qt::Key_Shift:
-    case Qt::Key_Control:
-    case Qt::Key_Alt: {
-        if (m_state == PressingModifierOnly) {
-            m_state = ReleasingModifierOnly;
-            handled = processKey(m_currentModifiers);
-        }
-        m_currentModifiers = modifiers & ~Utils::keyToModifier(key);
-        if (m_state == ReleasingModifierOnly && !m_currentModifiers) {
-            m_state = Normal;
-        }
-        break;
-    }
-    default:
-        m_state = Normal;
-        break;
-    }
-    if (m_lastShortcut) {
-        
m_lastShortcut->context()->component()->emitGlobalShortcutReleased(*m_lastShortcut);
-        m_lastShortcut = nullptr;
-    }
-    return handled;
-}
-
 bool GlobalShortcutsRegistry::pointerPressed(Qt::MouseButtons pointerButtons)
 {
     Q_UNUSED(pointerButtons)
@@ -600,7 +577,7 @@
         return (*it).get();
     }
 
-    auto *c = registerComponent(ComponentPtr(new Component(uniqueName, 
friendlyName), &unregisterComponent));
+    auto *c = registerComponent(ComponentPtr(new Component(uniqueName, 
friendlyName, this), &unregisterComponent));
     return c;
 }
 
@@ -620,7 +597,7 @@
         return static_cast<KServiceActionComponent *>((*it).get());
     }
 
-    auto *c = registerComponent(ComponentPtr(new 
KServiceActionComponent(service), &unregisterComponent));
+    auto *c = registerComponent(ComponentPtr(new 
KServiceActionComponent(service, this), &unregisterComponent));
     return static_cast<KServiceActionComponent *>(c);
 }
 
@@ -645,7 +622,7 @@
         service = new KService(filePath);
     }
 
-    auto *c = registerComponent(ComponentPtr(new 
KServiceActionComponent(service), &unregisterComponent));
+    auto *c = registerComponent(ComponentPtr(new 
KServiceActionComponent(service, this), &unregisterComponent));
 
     return static_cast<KServiceActionComponent *>(c);
 }
@@ -675,7 +652,7 @@
         // beginning.
         Q_ASSERT(!getComponent(groupName));
 
-        KConfigGroup configGroup(&_config, groupName);
+        const KConfigGroup configGroup(&_config, groupName);
 
         const QString friendlyName = configGroup.readEntry("_k_friendly_name");
 
@@ -689,7 +666,7 @@
                 continue;
             }
 
-            KConfigGroup contextGroup(&configGroup, context);
+            const KConfigGroup contextGroup(&configGroup, context);
             QString contextFriendlyName = 
contextGroup.readEntry("_k_friendly_name");
             component->createGlobalShortcutContext(context, 
contextFriendlyName);
             component->activateGlobalShortcutContext(context);
@@ -711,7 +688,7 @@
         // beginning.
         Q_ASSERT(!getComponent(groupName));
 
-        KConfigGroup configGroup = 
_config.group(QStringLiteral("services")).group(groupName);
+        const KConfigGroup configGroup = 
_config.group(QStringLiteral("services")).group(groupName);
 
         Component *component = createServiceActionComponent(groupName);
 
@@ -720,23 +697,6 @@
             continue;
         }
         Q_ASSERT(!component->uniqueName().isEmpty());
-
-        // Now load the contexts
-        const auto groupList = configGroup.groupList();
-        for (const QString &context : groupList) {
-            // Skip the friendly name group, this was previously used instead 
of _k_friendly_name
-            if (context == QLatin1String("Friendly Name")) {
-                continue;
-            }
-
-            KConfigGroup contextGroup(&configGroup, context);
-            QString contextFriendlyName = 
contextGroup.readEntry("_k_friendly_name");
-            component->createGlobalShortcutContext(context, 
contextFriendlyName);
-            component->activateGlobalShortcutContext(context);
-            component->loadSettings(contextGroup);
-        }
-
-        // Load the default context
         component->activateGlobalShortcutContext(QStringLiteral("default"));
         component->loadSettings(configGroup);
     }
@@ -788,27 +748,11 @@
         }
 
         auto *component = createServiceActionComponent(service);
-        if (KConfigGroup configGroup = 
_config.group(QStringLiteral("services")).group(component->uniqueName()); 
configGroup.exists()) {
-            // Now load the contexts
-            const auto groupList = configGroup.groupList();
-            for (const QString &context : groupList) {
-                // Skip the friendly name group, this was previously used 
instead of _k_friendly_name
-                if (context == QLatin1String("Friendly Name")) {
-                    continue;
-                }
-
-                KConfigGroup contextGroup(&configGroup, context);
-                QString contextFriendlyName = 
contextGroup.readEntry("_k_friendly_name");
-                component->createGlobalShortcutContext(context, 
contextFriendlyName);
-                component->activateGlobalShortcutContext(context);
-                component->loadSettings(contextGroup);
-            }
+        component->activateGlobalShortcutContext(QStringLiteral("default"));
 
-            // Load the default context
-            
component->activateGlobalShortcutContext(QStringLiteral("default"));
+        if (const KConfigGroup configGroup = 
_config.group(QStringLiteral("services")).group(component->uniqueName()); 
configGroup.exists()) {
             component->loadSettings(configGroup);
         } else {
-            
component->activateGlobalShortcutContext(QStringLiteral("default"));
             component->loadFromService();
         }
     }
@@ -912,7 +856,7 @@
     }
 
     if (shortcut && shortcut == m_lastShortcut) {
-        
m_lastShortcut->context()->component()->emitGlobalShortcutReleased(*m_lastShortcut);
+        
m_lastShortcut->context()->component()->emitGlobalShortcutEvent(*m_lastShortcut,
 ShortcutKeyState::Released);
         m_lastShortcut = nullptr;
     }
 
@@ -975,4 +919,9 @@
     detectAppsWithShortcuts();
 }
 
+KGlobalAccelInterface *GlobalShortcutsRegistry::interface() const
+{
+    return _manager;
+}
+
 #include "moc_globalshortcutsregistry.cpp"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/globalshortcutsregistry.h 
new/kglobalacceld-6.5.0/src/globalshortcutsregistry.h
--- old/kglobalacceld-6.4.5/src/globalshortcutsregistry.h       2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/globalshortcutsregistry.h       2025-10-16 
11:05:15.000000000 +0200
@@ -23,6 +23,7 @@
 #include <chrono>
 
 #include "kglobalaccel_export.h"
+#include "shortcutkeystate.h"
 
 class Component;
 class GlobalShortcut;
@@ -50,11 +51,6 @@
     Q_CLASSINFO("D-Bus Interface", 
"org.kde.KdedGlobalAccel.GlobalShortcutsRegistry")
 
 public:
-    /**
-     * Use GlobalShortcutsRegistry::self()
-     *
-     * @internal
-     */
     GlobalShortcutsRegistry();
     ~GlobalShortcutsRegistry() override;
 
@@ -116,14 +112,14 @@
      */
     bool isShortcutAvailable(const QKeySequence &shortcut, const QString 
&component, const QString &context) const;
 
-    static GlobalShortcutsRegistry *self();
-
     bool registerKey(const QKeySequence &key, GlobalShortcut *shortcut);
 
     void setDBusPath(const QDBusObjectPath &path);
 
     bool unregisterKey(const QKeySequence &key, GlobalShortcut *shortcut);
 
+    KGlobalAccelInterface *interface() const;
+
 public Q_SLOTS:
 
     void clear();
@@ -159,12 +155,11 @@
 
     // called by the implementation to inform us about key presses
     // returns true if the key was handled
-    bool keyPressed(int keyQt);
-    bool keyReleased(int keyQt);
+    bool keyEvent(int keyQt, ShortcutKeyState state);
     bool pointerPressed(Qt::MouseButtons pointerButtons);
     bool axisTriggered(int axis);
 
-    bool processKey(int keyQt);
+    bool processKey(int keyQt, ShortcutKeyState state);
 
     QHash<QKeySequence, GlobalShortcut *> _active_keys;
     QKeySequence _active_sequence;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/kglobalaccel_interface.cpp 
new/kglobalacceld-6.5.0/src/kglobalaccel_interface.cpp
--- old/kglobalacceld-6.4.5/src/kglobalaccel_interface.cpp      2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/kglobalaccel_interface.cpp      2025-10-16 
11:05:15.000000000 +0200
@@ -32,9 +32,9 @@
     d->owner = registry;
 }
 
-bool KGlobalAccelInterface::keyPressed(int keyQt)
+bool KGlobalAccelInterface::keyEvent(int keyQt, ShortcutKeyState state)
 {
-    return d->owner->keyPressed(keyQt);
+    return d->owner->keyEvent(keyQt, state);
 }
 
 void KGlobalAccelInterface::grabKeys()
@@ -47,11 +47,6 @@
     d->owner->ungrabKeys();
 }
 
-bool KGlobalAccelInterface::keyReleased(int keyQt)
-{
-    return d->owner->keyReleased(keyQt);
-}
-
 bool KGlobalAccelInterface::pointerPressed(Qt::MouseButtons buttons)
 {
     return d->owner->pointerPressed(buttons);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/kglobalaccel_interface.h 
new/kglobalacceld-6.5.0/src/kglobalaccel_interface.h
--- old/kglobalacceld-6.4.5/src/kglobalaccel_interface.h        2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/kglobalaccel_interface.h        2025-10-16 
11:05:15.000000000 +0200
@@ -12,6 +12,7 @@
 #include <QObject>
 
 #include "kglobalacceld_export.h"
+#include "shortcutkeystate.h"
 
 class GlobalShortcutsRegistry;
 
@@ -43,11 +44,6 @@
      */
     virtual bool grabKey(int key, bool grab) = 0;
 
-    /*
-     * Enable/disable all shortcuts. There will not be any grabbed shortcuts 
at this point.
-     */
-    virtual void setEnabled(bool) = 0;
-
     void setRegistry(GlobalShortcutsRegistry *registry);
 
 protected:
@@ -55,18 +51,10 @@
      * called by the implementation to inform us about key presses
      * @returns @c true if the key was handled
      **/
-    bool keyPressed(int keyQt);
+    bool keyEvent(int keyQt, ShortcutKeyState state);
     void grabKeys();
     void ungrabKeys();
     /**
-     * Called by the implementation to inform us about key releases
-     *
-     * @param keyQt the key that was just released
-     *
-     * @returns @c true if the key was handled
-     **/
-    bool keyReleased(int keyQt);
-    /**
      * Called by the implementation to inform us about pointer presses
      * Currently only used for clearing modifier only shortcuts
      *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/kglobalacceld.cpp 
new/kglobalacceld-6.5.0/src/kglobalacceld.cpp
--- old/kglobalacceld-6.4.5/src/kglobalacceld.cpp       2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/kglobalacceld.cpp       2025-10-16 
11:05:15.000000000 +0200
@@ -15,7 +15,7 @@
 #include "globalshortcutsregistry.h"
 #include "kglobalaccel.h"
 #include "kserviceactioncomponent.h"
-#include "logging_p.h"
+#include "logging.h"
 
 #include <QDBusConnection>
 #include <QDBusMetaType>
@@ -57,7 +57,7 @@
     //! Our holder
     KGlobalAccelD *q;
 
-    GlobalShortcutsRegistry *m_registry = nullptr;
+    std::unique_ptr<GlobalShortcutsRegistry> m_registry = nullptr;
 };
 
 GlobalShortcut *KGlobalAccelDPrivate::findAction(const QStringList &actionId) 
const
@@ -126,6 +126,11 @@
     }
 }
 
+KGlobalAccelInterface * ::KGlobalAccelD::interface() const
+{
+    return d->m_registry->interface();
+}
+
 GlobalShortcut *KGlobalAccelDPrivate::addAction(const QStringList &actionId)
 {
     Q_ASSERT(actionId.size() >= 4);
@@ -150,7 +155,10 @@
 
     Q_ASSERT(!component->getShortcutByName(componentUnique, contextUnique));
 
-    return new GlobalShortcut(actionId.at(KGlobalAccel::ActionUnique), 
actionId.at(KGlobalAccel::ActionFriendly), 
component->shortcutContext(contextUnique));
+    return new GlobalShortcut(actionId.at(KGlobalAccel::ActionUnique),
+                              actionId.at(KGlobalAccel::ActionFriendly),
+                              component->shortcutContext(contextUnique),
+                              m_registry.get());
 }
 
 Q_DECLARE_METATYPE(QStringList)
@@ -172,11 +180,11 @@
     qDBusRegisterMetaType<QList<KGlobalShortcutInfo>>();
     qDBusRegisterMetaType<KGlobalAccel::MatchType>();
 
-    d->m_registry = GlobalShortcutsRegistry::self();
+    d->m_registry = std::make_unique<GlobalShortcutsRegistry>();
     Q_ASSERT(d->m_registry);
 
     d->writeoutTimer.setSingleShot(true);
-    connect(&d->writeoutTimer, &QTimer::timeout, d->m_registry, 
&GlobalShortcutsRegistry::writeSettings);
+    connect(&d->writeoutTimer, &QTimer::timeout, d->m_registry.get(), 
&GlobalShortcutsRegistry::writeSettings);
 
     if 
(!QDBusConnection::sessionBus().registerService(QLatin1String("org.kde.kglobalaccel")))
 {
         qCWarning(KGLOBALACCELD) << "Failed to register service 
org.kde.kglobalaccel";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/kglobalacceld.h 
new/kglobalacceld-6.5.0/src/kglobalacceld.h
--- old/kglobalacceld-6.4.5/src/kglobalacceld.h 2025-09-09 10:25:13.000000000 
+0200
+++ new/kglobalacceld-6.5.0/src/kglobalacceld.h 2025-10-16 11:05:15.000000000 
+0200
@@ -11,6 +11,7 @@
 
 #include "kglobalacceld_export.h"
 
+#include "kglobalaccel_interface.h"
 #include <kglobalshortcutinfo.h>
 
 #include <KGlobalAccel>
@@ -48,6 +49,8 @@
 
     bool init();
 
+    KGlobalAccelInterface *interface() const;
+
 public Q_SLOTS:
 
     /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/kserviceactioncomponent.cpp 
new/kglobalacceld-6.5.0/src/kserviceactioncomponent.cpp
--- old/kglobalacceld-6.4.5/src/kserviceactioncomponent.cpp     2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/kserviceactioncomponent.cpp     2025-10-16 
11:05:15.000000000 +0200
@@ -8,7 +8,7 @@
 
 #include "kserviceactioncomponent.h"
 #include "globalshortcutcontext.h"
-#include "logging_p.h"
+#include "logging.h"
 
 #include <QFileInfo>
 
@@ -45,16 +45,20 @@
     return service->storageId();
 }
 
-KServiceActionComponent::KServiceActionComponent(KService::Ptr service)
-    : Component(makeUniqueName(service), service->name())
+KServiceActionComponent::KServiceActionComponent(KService::Ptr service, 
GlobalShortcutsRegistry *registry)
+    : Component(makeUniqueName(service), service->name(), registry)
     , m_service(service)
 {
 }
 
 KServiceActionComponent::~KServiceActionComponent() = default;
 
-void KServiceActionComponent::emitGlobalShortcutPressed(const GlobalShortcut 
&shortcut)
+void KServiceActionComponent::emitGlobalShortcutEvent(const GlobalShortcut 
&shortcut, ShortcutKeyState state)
 {
+    if (state != ShortcutKeyState::Pressed) {
+        return;
+    }
+
     KIO::ApplicationLauncherJob *job = nullptr;
 
     if (shortcut.uniqueName() == QLatin1String("_launch")) {
@@ -151,7 +155,7 @@
     }
 }
 
-void KServiceActionComponent::loadSettings(KConfigGroup &configGroup)
+void KServiceActionComponent::loadSettings(const KConfigGroup &configGroup)
 {
     // Action shortcuts
     const auto actions = m_service->actions();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/kserviceactioncomponent.h 
new/kglobalacceld-6.5.0/src/kserviceactioncomponent.h
--- old/kglobalacceld-6.4.5/src/kserviceactioncomponent.h       2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/kserviceactioncomponent.h       2025-10-16 
11:05:15.000000000 +0200
@@ -25,16 +25,16 @@
     ~KServiceActionComponent() override;
 
     void loadFromService();
-    void emitGlobalShortcutPressed(const GlobalShortcut &shortcut) override;
+    void emitGlobalShortcutEvent(const GlobalShortcut &shortcut, 
ShortcutKeyState state) override;
     void writeSettings(KConfigGroup &config) const override;
-    void loadSettings(KConfigGroup &config) override;
+    void loadSettings(const KConfigGroup &config) override;
     bool cleanUp() override;
 
 private:
     friend class ::GlobalShortcutsRegistry;
     //! Constructs a KServiceActionComponent. This is a private constuctor, to 
create
     //! a KServiceActionComponent, use 
GlobalShortcutsRegistry::self()->createServiceActionComponent().
-    KServiceActionComponent(KService::Ptr service);
+    KServiceActionComponent(KService::Ptr service, GlobalShortcutsRegistry 
*registry);
 
     KService::Ptr m_service;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/logging.cpp 
new/kglobalacceld-6.5.0/src/logging.cpp
--- old/kglobalacceld-6.4.5/src/logging.cpp     2025-09-09 10:25:13.000000000 
+0200
+++ new/kglobalacceld-6.5.0/src/logging.cpp     1970-01-01 01:00:00.000000000 
+0100
@@ -1,10 +0,0 @@
-/*
-    SPDX-FileCopyrightText: 2015 Martin Gräßlin <[email protected]>
-
-    SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR 
LicenseRef-KDE-Accepted-LGPL
-*/
-
-#include "logging_p.h"
-
-// logging category for this framework, default: log stuff >= warning
-Q_LOGGING_CATEGORY(KGLOBALACCELD, "kf.globalaccel.kglobalacceld", QtWarningMsg)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/logging_p.h 
new/kglobalacceld-6.5.0/src/logging_p.h
--- old/kglobalacceld-6.4.5/src/logging_p.h     2025-09-09 10:25:13.000000000 
+0200
+++ new/kglobalacceld-6.5.0/src/logging_p.h     1970-01-01 01:00:00.000000000 
+0100
@@ -1,12 +0,0 @@
-/*
-    SPDX-FileCopyrightText: 2015 Martin Gräßlin <[email protected]>
-
-    SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR 
LicenseRef-KDE-Accepted-LGPL
-*/
-
-#ifndef KGLOBALACCELD_LOGGING_P_H
-#define KGLOBALACCELD_LOGGING_P_H
-#include <QLoggingCategory>
-Q_DECLARE_LOGGING_CATEGORY(KGLOBALACCELD)
-
-#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/main.cpp 
new/kglobalacceld-6.5.0/src/main.cpp
--- old/kglobalacceld-6.4.5/src/main.cpp        2025-09-09 10:25:13.000000000 
+0200
+++ new/kglobalacceld-6.5.0/src/main.cpp        2025-10-16 11:05:15.000000000 
+0200
@@ -9,7 +9,6 @@
 
 #include "kglobalaccel_version.h"
 #include "kglobalacceld.h"
-#include "logging_p.h"
 
 #include <KAboutData>
 #include <KCrash>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kglobalacceld-6.4.5/src/plugins/xcb/kglobalaccel_x11.cpp 
new/kglobalacceld-6.5.0/src/plugins/xcb/kglobalaccel_x11.cpp
--- old/kglobalacceld-6.4.5/src/plugins/xcb/kglobalaccel_x11.cpp        
2025-09-09 10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/plugins/xcb/kglobalaccel_x11.cpp        
2025-10-16 11:05:15.000000000 +0200
@@ -8,7 +8,7 @@
 
 #include "kglobalaccel_x11.h"
 
-#include "logging_p.h"
+#include "logging.h"
 #include <KKeyServer>
 #include <netwm.h>
 
@@ -185,6 +185,8 @@
     m_remapTimer = new QTimer(this);
     m_remapTimer->setSingleShot(true);
     connect(m_remapTimer, &QTimer::timeout, this, 
&KGlobalAccelImpl::x11MappingNotify);
+
+    qApp->installNativeEventFilter(this);
 }
 
 KGlobalAccelImpl::~KGlobalAccelImpl()
@@ -440,7 +442,7 @@
     if (NET::timestampCompare(pEvent->time, QX11Info::appTime()) > 0) {
         QX11Info::setAppTime(pEvent->time);
     }
-    return keyPressed(keyQt);
+    return keyEvent(keyQt, ShortcutKeyState::Pressed);
 }
 
 bool KGlobalAccelImpl::x11KeyRelease(xcb_key_release_event_t *pEvent)
@@ -453,7 +455,7 @@
     if (!KKeyServer::xcbKeyPressEventToQt(pEvent, &keyQt)) {
         return false;
     }
-    return keyReleased(keyQt);
+    return keyEvent(keyQt, ShortcutKeyState::Released);
 }
 
 bool KGlobalAccelImpl::x11ButtonPress(xcb_button_press_event_t *event)
@@ -463,13 +465,4 @@
     return pointerPressed(Qt::NoButton);
 }
 
-void KGlobalAccelImpl::setEnabled(bool enable)
-{
-    if (enable && qApp->platformName() == QLatin1String("xcb")) {
-        qApp->installNativeEventFilter(this);
-    } else {
-        qApp->removeNativeEventFilter(this);
-    }
-}
-
 #include "moc_kglobalaccel_x11.cpp"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kglobalacceld-6.4.5/src/plugins/xcb/kglobalaccel_x11.h 
new/kglobalacceld-6.5.0/src/plugins/xcb/kglobalaccel_x11.h
--- old/kglobalacceld-6.4.5/src/plugins/xcb/kglobalaccel_x11.h  2025-09-09 
10:25:13.000000000 +0200
+++ new/kglobalacceld-6.5.0/src/plugins/xcb/kglobalaccel_x11.h  2025-10-16 
11:05:15.000000000 +0200
@@ -50,9 +50,6 @@
      */
     bool grabKey(int key, bool grab) override;
 
-    /// Enable/disable all shortcuts. There will not be any grabbed shortcuts 
at this point.
-    void setEnabled(bool) override;
-
     bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr 
*) override;
 
 private:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalacceld-6.4.5/src/shortcutkeystate.h 
new/kglobalacceld-6.5.0/src/shortcutkeystate.h
--- old/kglobalacceld-6.4.5/src/shortcutkeystate.h      1970-01-01 
01:00:00.000000000 +0100
+++ new/kglobalacceld-6.5.0/src/shortcutkeystate.h      2025-10-16 
11:05:15.000000000 +0200
@@ -0,0 +1,18 @@
+/*
+This file is part of the KDE libraries
+    SPDX-FileCopyrightText: 2025 Ritchie Frodomar <[email protected]>
+
+    SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#ifndef KEYBOARDKEYSTATE_H
+#define KEYBOARDKEYSTATE_H
+
+enum class ShortcutKeyState
+{
+    Pressed,
+    Repeated,
+    Released
+};
+
+#endif
\ No newline at end of file

Reply via email to