From: Peter Penz Date: Mon, 28 Feb 2011 21:04:00 +0000 (+0100) Subject: Fix issue that wrong directory is shown X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/7df84881251f60d2bd501eab3f2d1413e9823b21?ds=inline Fix issue that wrong directory is shown Commit 680009b522b2c9eda03201ac02dc18994b5a8bd0 resulted in a regression when switching from a view in the column-mode to a view in the icon- or details-mode: The wrong content has been shown. This patch reverts commit 680009b522b2c9eda03201ac02dc18994b5a8bd0 and solves the performance-issue in combination with previews by triggering the preview-generation in a queued way. --- diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index db917ee5a..4ab16e052 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -434,12 +434,8 @@ void DolphinView::refresh() m_active = true; createView(); - reload(); - - // For performance reasons applying the view properties should be done after updating - // the directory-lister URL with reload(). Otherwise in combination with enabled - // previews the creation of already obsolete directory items gets triggered. applyViewProperties(); + reload(); setActive(oldActivationState); updateZoomLevel(oldZoomLevel); @@ -548,6 +544,7 @@ void DolphinView::setUrl(const KUrl& url) m_viewModeController->setUrl(url); // emits urlChanged, which we forward m_viewAccessor.prepareUrlChange(url); + applyViewProperties(); // When changing the URL there is no need to keep the version // data of the previous URL. @@ -557,11 +554,6 @@ void DolphinView::setUrl(const KUrl& url) connectViewAccessor(); loadDirectory(url); - // For performance reasons applying the view properties should be done after updating - // the directory-lister URL with loadDirectory(). Otherwise in combination with enabled - // previews the creation of already obsolete directory items gets triggered. - applyViewProperties(); - if (hadSelection || hasSelection()) { emitSelectionChangedSignal(); } diff --git a/src/views/viewextensionsfactory.cpp b/src/views/viewextensionsfactory.cpp index 1a395dea9..a52871ff4 100644 --- a/src/views/viewextensionsfactory.cpp +++ b/src/views/viewextensionsfactory.cpp @@ -73,8 +73,14 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view, this, SLOT(slotZoomLevelChanged())); connect(viewModeController, SIGNAL(cancelPreviews()), this, SLOT(cancelPreviews())); + + // slotPreviewChanged() is connected as Qt::QueuedConnection to prevent performance + // issues when the directory lister changes its URL after the preview-changes have + // been applied. Usecase: Switch from directory A having no previews to + // directory B with previews (see sequence in DolphinView::setUrl()). connect(dolphinViewController->view(), SIGNAL(showPreviewChanged()), - this, SLOT(slotShowPreviewChanged())); + this, SLOT(slotShowPreviewChanged()), + Qt::QueuedConnection); // initialize selection manager m_selectionManager = new SelectionManager(view);