[PATCH] applets/appmenu: Store dbus menu importer in a std::unique_ptr
authorVlad Zahorodnii <vlad.zahorodnii@kde.org>
Wed, 23 Apr 2025 11:34:28 +0000 (14:34 +0300)
committerAurélien COUDERC <coucouf@debian.org>
Tue, 20 May 2025 06:31:26 +0000 (08:31 +0200)
The code is simpler this way.

Gbp-Pq: Name upstream_5d008e00_applets-appmenu-Store-dbus-menu-importer-in-a-std-unique-ptr.patch

applets/appmenu/plugin/appmenumodel.cpp
applets/appmenu/plugin/appmenumodel.h

index db3b351405fc8ce2d31157b4d19306c3689cf87a..99263b3ad4aa6aa5cb2ef3f990e26b08b7ac6060 100644 (file)
@@ -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;
index d44a6650a0cfb387ac199392664d93888b984e6f..8bf4d64e142b37cc42f276342aa854836ebc36e3 100644 (file)
@@ -91,5 +91,5 @@ private:
     QString m_serviceName;
     QString m_menuObjectPath;
 
-    QPointer<KDBusMenuImporter> m_importer;
+    std::unique_ptr<KDBusMenuImporter> m_importer;
 };