From 2328cb7f923e5c6eeb7617eebf3ee73c0bb8e50b Mon Sep 17 00:00:00 2001 From: Amol Godbole Date: Sun, 15 Sep 2024 18:49:43 -0500 Subject: DolphinViewContainer: Delay changing the url KCoreDirLister::itemsDeleted() signal is being emitted twice for the same url. This results in Dolphin displaying an incorrect location. Delay changing the url instead of delaying DolphinView::currentDirectoryRemoved() so that the check for current directory being removed in KFileItemModel::slotItemsDeleted() occurs correctly, while still ensuring that KCoreDirLister is not prematurely modified. BUG: 492277, BUG: 473377 --- src/dolphinviewcontainer.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/dolphinviewcontainer.cpp') diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index e55519d04..c89621dbd 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -975,10 +975,13 @@ void DolphinViewContainer::slotCurrentDirectoryRemoved() const QString dirPath = url().toLocalFile(); const QString newPath = getNearestExistingAncestorOfPath(dirPath); const QUrl newUrl = QUrl::fromLocalFile(newPath); - setUrl(newUrl); - } - - showMessage(xi18n("Current location changed, %1 is no longer accessible.", location), KMessageWidget::Warning); + // #473377: Delay changing the url to avoid modifying KCoreDirLister before KCoreDirListerCache::deleteDir() returns. + QTimer::singleShot(0, this, [&, newUrl, location] { + setUrl(newUrl); + showMessage(xi18n("Current location changed, %1 is no longer accessible.", location), KMessageWidget::Warning); + }); + } else + showMessage(xi18n("Current location changed, %1 is no longer accessible.", location), KMessageWidget::Warning); } void DolphinViewContainer::slotOpenUrlFinished(KJob *job) -- cgit v1.3