Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.3:Rings:2-TestDVD
plasma5-workspace
0031-Hide-menu-if-the-menu-disappears-off-DBus....
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0031-Hide-menu-if-the-menu-disappears-off-DBus.patch of Package plasma5-workspace
From 727f407a18d6dbe34f90decedc0eea5811a0c1a9 Mon Sep 17 00:00:00 2001 From: David Edmundson <kde@davidedmundson.co.uk> Date: Tue, 17 Jan 2017 19:36:35 +0000 Subject: [PATCH 31/44] Hide menu if the menu disappears off DBus Summary: This can happen without a focus change if focus is changed to a window that doesn't claim the menu, for example the desktop. It could also happen if an application does something weird, like release its service name. BUG: 374995 Test Plan: Ran "sleep 10; killall kate" Then selected kate then the desktop Kate remained showing for 10 seconds then closed Reviewers: #plasma Subscribers: plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D4177 --- applets/appmenu/plugin/appmenumodel.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/applets/appmenu/plugin/appmenumodel.cpp b/applets/appmenu/plugin/appmenumodel.cpp index aa0b1e4d..62f6e80d 100644 --- a/applets/appmenu/plugin/appmenumodel.cpp +++ b/applets/appmenu/plugin/appmenumodel.cpp @@ -32,6 +32,9 @@ #include <QAction> #include <QMenu> +#include <QDebug> +#include <QDBusConnection> +#include <QDBusConnectionInterface> #include <dbusmenuimporter.h> @@ -62,6 +65,16 @@ AppMenuModel::AppMenuModel(QObject *parent) connect(KWindowSystem::self(), &KWindowSystem::activeWindowChanged, this, &AppMenuModel::onActiveWindowChanged); connect(this, &AppMenuModel::modelNeedsUpdate, this, &AppMenuModel::update, Qt::UniqueConnection); onActiveWindowChanged(KWindowSystem::activeWindow()); + + //if our current DBus connection gets lost, close the menu + //we'll select the new menu when the focus changes + connect(QDBusConnection::sessionBus().interface(), &QDBusConnectionInterface::serviceOwnerChanged, this, [this](const QString &serviceName, const QString &oldOwner, const QString &newOwner) + { + if (serviceName == m_serviceName && newOwner.isEmpty()) { + setMenuAvailable(false); + emit modelNeedsUpdate(); + } + }); } AppMenuModel::~AppMenuModel() = default; @@ -246,5 +259,5 @@ void AppMenuModel::updateApplicationMenu(const QString &serviceName, const QStri setMenuAvailable(true); emit modelNeedsUpdate(); }); - } + -- 2.12.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor