]> cloud.milkyroute.net Git - dolphin.git/commitdiff
DolphinView: Use SingleShot and Queued Connections
authorAmol Godbole <amolagodbole@gmail.com>
Thu, 9 Nov 2023 17:17:33 +0000 (11:17 -0600)
committerMéven Car <meven.car@kdemail.net>
Sun, 14 Jan 2024 08:34:58 +0000 (08:34 +0000)
A minor refactor where Qt::SingleShotConnection has been utilized.
Also, signal delay using QTimer has been replaced with a
Qt::QueuedConnection.

src/kitemviews/kfileitemmodel.cpp
src/views/dolphinview.cpp

index 5f4f0bb9ada11195d08360c89c5041dc92edd271..939f66157da6c34a0c0b90d8623676f1126850d9 100644 (file)
@@ -1196,12 +1196,7 @@ void KFileItemModel::slotItemsDeleted(const KFileItemList &items)
 
     for (const KFileItem &item : items) {
         if (item.url() == currentDir) {
-            // #473377: Delay emitting currentDirectoryRemoved() to avoid modifying KCoreDirLister
-            // before KCoreDirListerCache::deleteDir() returns.
-            QTimer::singleShot(0, this, [this] {
-                Q_EMIT currentDirectoryRemoved();
-            });
-
+            Q_EMIT currentDirectoryRemoved();
             return;
         }
 
index 6b77a46ea223c1af38463a18d920a155bfa5a954..ae0aa903c02aee9382794c131a10f1465cf9ef94 100644 (file)
@@ -200,7 +200,8 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent)
     connect(m_model, &KFileItemModel::directoryRedirection, this, &DolphinView::slotDirectoryRedirection);
     connect(m_model, &KFileItemModel::urlIsFileError, this, &DolphinView::urlIsFileError);
     connect(m_model, &KFileItemModel::fileItemsChanged, this, &DolphinView::fileItemsChanged);
-    connect(m_model, &KFileItemModel::currentDirectoryRemoved, this, &DolphinView::currentDirectoryRemoved);
+    // #473377: Use a QueuedConnection to avoid modifying KCoreDirLister before KCoreDirListerCache::deleteDir() returns.
+    connect(m_model, &KFileItemModel::currentDirectoryRemoved, this, &DolphinView::currentDirectoryRemoved, Qt::QueuedConnection);
 
     connect(this, &DolphinView::itemCountChanged, this, &DolphinView::updatePlaceholderLabel);
 
@@ -740,17 +741,18 @@ void DolphinView::renameSelectedItems()
     if (items.count() == 1 && GeneralSettings::renameInline()) {
         const int index = m_model->index(items.first());
 
-        QMetaObject::Connection *const connection = new QMetaObject::Connection;
-        *connection = connect(m_view, &KItemListView::scrollingStopped, this, [=]() {
-            QObject::disconnect(*connection);
-            delete connection;
-
-            m_view->editRole(index, "text");
+        connect(
+            m_view,
+            &KItemListView::scrollingStopped,
+            this,
+            [this, index]() {
+                m_view->editRole(index, "text");
 
-            hideToolTip();
+                hideToolTip();
 
-            connect(m_view, &DolphinItemListView::roleEditingFinished, this, &DolphinView::slotRoleEditingFinished);
-        });
+                connect(m_view, &DolphinItemListView::roleEditingFinished, this, &DolphinView::slotRoleEditingFinished);
+            },
+            Qt::SingleShotConnection);
         m_view->scrollToItem(index);
 
     } else {