File 0042-Only-activate-kded-Appmenu-signals-if-menus-are-in-t.patch of Package plasma5-workspace

From 0ee82eadb93cfa2e90004497bc5846b9667b2d94 Mon Sep 17 00:00:00 2001
From: David Edmundson <kde@davidedmundson.co.uk>
Date: Tue, 28 Feb 2017 15:13:29 +0000
Subject: [PATCH 42/44] Only activate kded Appmenu signals if menus are in the
 window decoration

Summary:
The Appmenu applet doesn't use the AppMenu module, and it interferes
with the applet.

Test Plan:
Set menus to in decoration
Pressed alt+f, it appeared
Changed it to be in the applet
pressed alt+f, nothing happened

Reviewers: #plasma, broulik

Reviewed By: #plasma, broulik

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D4833
---
 appmenu/appmenu.cpp | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/appmenu/appmenu.cpp b/appmenu/appmenu.cpp
index 366f8c7a..8289b643 100644
--- a/appmenu/appmenu.cpp
+++ b/appmenu/appmenu.cpp
@@ -71,10 +71,6 @@ AppMenuModule::AppMenuModule(QObject* parent, const QList<QVariant>&)
     connect(this, &AppMenuModule::showRequest, m_appmenuDBus, &AppmenuDBus::showRequest);
     connect(this, &AppMenuModule::menuHidden, m_appmenuDBus, &AppmenuDBus::menuHidden);
     connect(this, &AppMenuModule::menuShown, m_appmenuDBus, &AppmenuDBus::menuShown);
-
-    QDBusConnection::sessionBus().connect({}, {}, QStringLiteral("com.canonical.dbusmenu"),
-                                                  QStringLiteral("ItemActivationRequested"),
-                                          this, SLOT(itemActivationRequested(int,uint)));
 }
 
 AppMenuModule::~AppMenuModule() = default;
@@ -187,6 +183,16 @@ void AppMenuModule::reconfigure()
     KConfigGroup config(KSharedConfig::openConfig(QStringLiteral("kdeglobals")), QStringLiteral("Appmenu Style"));
     const QString &menuStyle = config.readEntry("Style", "InApplication");
     // TODO enum or Kconfigxt or what not?
+    if (menuStyle == QLatin1String("Decoration")) {
+        QDBusConnection::sessionBus().connect({}, {}, QStringLiteral("com.canonical.dbusmenu"),
+                                                      QStringLiteral("ItemActivationRequested"),
+                                              this, SLOT(itemActivationRequested(int,uint)));
+    } else {
+        QDBusConnection::sessionBus().disconnect({}, {}, QStringLiteral("com.canonical.dbusmenu"),
+                                                      QStringLiteral("ItemActivationRequested"),
+                                              this, SLOT(itemActivationRequested(int,uint)));
+    }
+
     if (menuStyle == QLatin1String("InApplication")) {
         delete m_menuImporter;
         m_menuImporter = nullptr;
-- 
2.12.0

openSUSE Build Service is sponsored by