1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
From 5d008e00c295a3a036220dbeb3bd3e1582d005da Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Wed, 23 Apr 2025 14:34:28 +0300
Subject: [PATCH] applets/appmenu: Store dbus menu importer in a
std::unique_ptr
The code is simpler this way.
---
applets/appmenu/plugin/appmenumodel.cpp | 26 ++++++++-----------------
applets/appmenu/plugin/appmenumodel.h | 2 +-
2 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/applets/appmenu/plugin/appmenumodel.cpp b/applets/appmenu/plugin/appmenumodel.cpp
index db3b351405..99263b3ad4 100644
--- a/applets/appmenu/plugin/appmenumodel.cpp
+++ b/applets/appmenu/plugin/appmenumodel.cpp
@@ -25,8 +25,8 @@
class KDBusMenuImporter : public DBusMenuImporter
{
public:
- KDBusMenuImporter(const QString &service, const QString &path, QObject *parent)
- : DBusMenuImporter(service, path, parent)
+ KDBusMenuImporter(const QString &service, const QString &path)
+ : DBusMenuImporter(service, path)
{
}
@@ -268,7 +268,7 @@ void AppMenuModel::updateApplicationMenu(const QString &serviceName, const QStri
{
if (m_serviceName == serviceName && m_menuObjectPath == menuObjectPath) {
if (m_importer) {
- QMetaObject::invokeMethod(m_importer, "updateMenu", Qt::QueuedConnection);
+ QMetaObject::invokeMethod(m_importer.get(), "updateMenu", Qt::QueuedConnection);
}
return;
}
@@ -280,26 +280,16 @@ void AppMenuModel::updateApplicationMenu(const QString &serviceName, const QStri
m_serviceName = QString();
m_menuObjectPath = QString();
m_serviceWatcher->setWatchedServices({});
-
- if (m_importer) {
- m_importer->disconnect(this);
- m_importer->deleteLater();
- m_importer = nullptr;
- }
+ m_importer.reset();
} else {
m_serviceName = serviceName;
m_menuObjectPath = menuObjectPath;
m_serviceWatcher->setWatchedServices(QStringList({m_serviceName}));
- if (m_importer) {
- m_importer->disconnect(this);
- m_importer->deleteLater();
- }
-
- m_importer = new KDBusMenuImporter(serviceName, menuObjectPath, this);
- QMetaObject::invokeMethod(m_importer, "updateMenu", Qt::QueuedConnection);
+ m_importer = std::make_unique<KDBusMenuImporter>(serviceName, menuObjectPath);
+ QMetaObject::invokeMethod(m_importer.get(), "updateMenu", Qt::QueuedConnection);
- connect(m_importer.data(), &DBusMenuImporter::menuUpdated, this, [=, this](QMenu *menu) {
+ connect(m_importer.get(), &DBusMenuImporter::menuUpdated, this, [=, this](QMenu *menu) {
m_menu = m_importer->menu();
if (m_menu.isNull() || menu != m_menu) {
return;
@@ -330,7 +320,7 @@ void AppMenuModel::updateApplicationMenu(const QString &serviceName, const QStri
Q_EMIT modelNeedsUpdate();
});
- connect(m_importer.data(), &DBusMenuImporter::actionActivationRequested, this, [this](QAction *action) {
+ connect(m_importer.get(), &DBusMenuImporter::actionActivationRequested, this, [this](QAction *action) {
// TODO submenus
if (!m_menuAvailable || !m_menu) {
return;
diff --git a/applets/appmenu/plugin/appmenumodel.h b/applets/appmenu/plugin/appmenumodel.h
index 2d283dc351..5d3f2f6415 100644
--- a/applets/appmenu/plugin/appmenumodel.h
+++ b/applets/appmenu/plugin/appmenumodel.h
@@ -93,5 +93,5 @@ private:
QString m_serviceName;
QString m_menuObjectPath;
- QPointer<KDBusMenuImporter> m_importer;
+ std::unique_ptr<KDBusMenuImporter> m_importer;
};
--
GitLab
|