X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e2b844437e9308a04ddf043ae9d2f5c8ffef97b0..ca5d3fde114dfdb280e46995e8a425d3ec558596:/src/views/viewextensionsfactory.cpp diff --git a/src/views/viewextensionsfactory.cpp b/src/views/viewextensionsfactory.cpp index 6d4ab09ca..a52871ff4 100644 --- a/src/views/viewextensionsfactory.cpp +++ b/src/views/viewextensionsfactory.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Peter Penz * + * Copyright (C) 2009 by Peter Penz * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -33,9 +33,9 @@ #include "dolphin_generalsettings.h" -#include -#include -#include +#include +#include +#include #include #include @@ -43,7 +43,6 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view, DolphinViewController* dolphinViewController, const ViewModeController* viewModeController) : QObject(view), - m_appliedPointingHandCursor(false), m_view(view), m_dolphinViewController(dolphinViewController), m_toolTipManager(0), @@ -74,17 +73,21 @@ 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 - if (settings->showSelectionToggle()) { - m_selectionManager = new SelectionManager(view); - connect(m_selectionManager, SIGNAL(selectionChanged()), - this, SLOT(requestActivation())); - connect(viewModeController, SIGNAL(urlChanged(const KUrl&)), - m_selectionManager, SLOT(reset())); - } + m_selectionManager = new SelectionManager(view); + connect(m_selectionManager, SIGNAL(selectionChanged()), + this, SLOT(requestActivation())); + connect(viewModeController, SIGNAL(urlChanged(const KUrl&)), + m_selectionManager, SLOT(reset())); // initialize auto scroller m_autoScroller = new DolphinViewAutoScroller(view); @@ -129,10 +132,6 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view, this, SLOT(slotNameFilterChanged(const QString&))); view->viewport()->installEventFilter(this); - - // Apply a pointing-hand cursor when hovering files - connect(view, SIGNAL(entered(const QModelIndex&)), SLOT(applyPointingHandCursor())); - connect(view, SIGNAL(viewportEntered()), SLOT(restoreCursor())); } ViewExtensionsFactory::~ViewExtensionsFactory() @@ -162,28 +161,16 @@ bool ViewExtensionsFactory::autoFolderExpandingEnabled() const bool ViewExtensionsFactory::eventFilter(QObject* watched, QEvent* event) { Q_UNUSED(watched); - - switch (event->type()) { - case QEvent::Wheel: - if (m_selectionManager != 0) { - m_selectionManager->reset(); - } - break; - - case QEvent::Leave: - restoreCursor(); - break; - - default: break; + if ((event->type() == QEvent::Wheel) && m_selectionManager) { + m_selectionManager->reset(); } - return false; } void ViewExtensionsFactory::slotZoomLevelChanged() { m_previewGenerator->updateIcons(); - if (m_selectionManager != 0) { + if (m_selectionManager) { m_selectionManager->reset(); } } @@ -253,22 +240,6 @@ void ViewExtensionsFactory::requestActivation() m_dolphinViewController->requestActivation(); } -void ViewExtensionsFactory::applyPointingHandCursor() -{ - if (!m_appliedPointingHandCursor && !(QApplication::mouseButtons() & Qt::LeftButton)) { - QApplication::setOverrideCursor(QCursor(Qt::PointingHandCursor)); - m_appliedPointingHandCursor = true; - } -} - -void ViewExtensionsFactory::restoreCursor() -{ - if (m_appliedPointingHandCursor) { - QApplication::restoreOverrideCursor(); - m_appliedPointingHandCursor = false; - } -} - DolphinSortFilterProxyModel* ViewExtensionsFactory::proxyModel() const { return static_cast(m_view->model());