X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/652d08c9242ed51d86dba3b2afda9d3b2e9a9cd7..6c8c052b3ffa628fd99f4e4d726017e2fc8e0e1d:/src/views/viewextensionsfactory.cpp diff --git a/src/views/viewextensionsfactory.cpp b/src/views/viewextensionsfactory.cpp index e5638c03e..152396253 100644 --- a/src/views/viewextensionsfactory.cpp +++ b/src/views/viewextensionsfactory.cpp @@ -37,11 +37,13 @@ #include #include #include +#include ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view, DolphinViewController* dolphinViewController, const ViewModeController* viewModeController) : QObject(view), + m_appliedPointingHandCursor(false), m_view(view), m_dolphinViewController(dolphinViewController), m_toolTipManager(0), @@ -50,7 +52,7 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view, m_autoScroller(0), m_fileItemDelegate(0), m_versionControlObserver(0) -{ +{ view->setSelectionMode(QAbstractItemView::ExtendedSelection); GeneralSettings* settings = DolphinSettings::instance().generalSettings(); @@ -61,7 +63,7 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view, m_toolTipManager = new ToolTipManager(view, proxyModel); connect(dolphinViewController, SIGNAL(hideToolTip()), - m_toolTipManager, SLOT(hideTip())); + m_toolTipManager, SLOT(hideToolTip())); } // initialize preview generator @@ -127,6 +129,11 @@ 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())); + connect(viewModeController, SIGNAL(urlChanged(const KUrl&)), SLOT(restoreCursor())); } ViewExtensionsFactory::~ViewExtensionsFactory() @@ -156,9 +163,21 @@ bool ViewExtensionsFactory::autoFolderExpandingEnabled() const bool ViewExtensionsFactory::eventFilter(QObject* watched, QEvent* event) { Q_UNUSED(watched); - if ((event->type() == QEvent::Wheel) && (m_selectionManager != 0)) { - m_selectionManager->reset(); + + switch (event->type()) { + case QEvent::Wheel: + if (m_selectionManager != 0) { + m_selectionManager->reset(); + } + break; + + case QEvent::Leave: + restoreCursor(); + break; + + default: break; } + return false; } @@ -235,6 +254,22 @@ 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());