┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/views/selectiontoggle.cpp13
-rw-r--r--src/views/selectiontoggle.h1
-rw-r--r--src/views/tooltips/tooltipmanager.cpp13
-rw-r--r--src/views/tooltips/tooltipmanager.h1
-rw-r--r--src/views/viewextensionsfactory.cpp38
-rw-r--r--src/views/viewextensionsfactory.h3
6 files changed, 65 insertions, 4 deletions
diff --git a/src/views/selectiontoggle.cpp b/src/views/selectiontoggle.cpp
index f5287a3dd..3ab40ebdc 100644
--- a/src/views/selectiontoggle.cpp
+++ b/src/views/selectiontoggle.cpp
@@ -25,6 +25,7 @@
#include <kiconeffect.h>
#include <klocale.h>
+#include <QApplication>
#include <QPainter>
#include <QPaintEvent>
#include <QRect>
@@ -35,6 +36,7 @@ SelectionToggle::SelectionToggle(QWidget* parent) :
QAbstractButton(parent),
m_isHovered(false),
m_leftMouseButtonPressed(false),
+ m_appliedArrowCursor(false),
m_fadingValue(0),
m_margin(0),
m_icon(),
@@ -132,6 +134,11 @@ void SelectionToggle::enterEvent(QEvent* event)
{
QAbstractButton::enterEvent(event);
+ if (!m_appliedArrowCursor) {
+ QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
+ m_appliedArrowCursor = true;
+ }
+
// if the mouse cursor is above the selection toggle, display
// it immediately without fading timer
m_isHovered = true;
@@ -147,6 +154,12 @@ void SelectionToggle::enterEvent(QEvent* event)
void SelectionToggle::leaveEvent(QEvent* event)
{
QAbstractButton::leaveEvent(event);
+
+ if (m_appliedArrowCursor) {
+ QApplication::restoreOverrideCursor();
+ m_appliedArrowCursor = false;
+ }
+
m_isHovered = false;
update();
}
diff --git a/src/views/selectiontoggle.h b/src/views/selectiontoggle.h
index 210f1a3aa..79833a522 100644
--- a/src/views/selectiontoggle.h
+++ b/src/views/selectiontoggle.h
@@ -89,6 +89,7 @@ private:
private:
bool m_isHovered;
bool m_leftMouseButtonPressed;
+ bool m_appliedArrowCursor;
int m_fadingValue;
int m_margin;
QPixmap m_icon;
diff --git a/src/views/tooltips/tooltipmanager.cpp b/src/views/tooltips/tooltipmanager.cpp
index a2b717b91..09e97861a 100644
--- a/src/views/tooltips/tooltipmanager.cpp
+++ b/src/views/tooltips/tooltipmanager.cpp
@@ -43,6 +43,7 @@ ToolTipManager::ToolTipManager(QAbstractItemView* parent,
m_fileMetaDataToolTip(0),
m_toolTipRequested(false),
m_metaDataRequested(false),
+ m_appliedWaitCursor(false),
m_item(),
m_itemRect()
{
@@ -94,7 +95,10 @@ ToolTipManager::~ToolTipManager()
void ToolTipManager::hideToolTip()
{
- QApplication::restoreOverrideCursor();
+ if (m_appliedWaitCursor) {
+ QApplication::restoreOverrideCursor();
+ m_appliedWaitCursor = false;
+ }
m_toolTipRequested = false;
m_metaDataRequested = false;
@@ -219,14 +223,19 @@ void ToolTipManager::slotMetaDataRequestFinished()
void ToolTipManager::showToolTip()
{
Q_ASSERT(m_toolTipRequested);
- QApplication::restoreOverrideCursor();
+ if (m_appliedWaitCursor) {
+ QApplication::restoreOverrideCursor();
+ m_appliedWaitCursor = false;
+ }
if (QApplication::mouseButtons() & Qt::LeftButton) {
return;
}
if (m_fileMetaDataToolTip->preview().isNull() || m_metaDataRequested) {
+ Q_ASSERT(!m_appliedWaitCursor);
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+ m_appliedWaitCursor = true;
return;
}
diff --git a/src/views/tooltips/tooltipmanager.h b/src/views/tooltips/tooltipmanager.h
index dffd18868..f8bcd3dfd 100644
--- a/src/views/tooltips/tooltipmanager.h
+++ b/src/views/tooltips/tooltipmanager.h
@@ -84,6 +84,7 @@ private:
bool m_toolTipRequested;
bool m_metaDataRequested;
+ bool m_appliedWaitCursor;
KFileItem m_item;
QRect m_itemRect;
};
diff --git a/src/views/viewextensionsfactory.cpp b/src/views/viewextensionsfactory.cpp
index 0ddb9d0a4..6d4ab09ca 100644
--- a/src/views/viewextensionsfactory.cpp
+++ b/src/views/viewextensionsfactory.cpp
@@ -37,11 +37,13 @@
#include <kdirmodel.h>
#include <kfilepreviewgenerator.h>
#include <QAbstractItemView>
+#include <QApplication>
ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view,
DolphinViewController* dolphinViewController,
const ViewModeController* viewModeController) :
QObject(view),
+ m_appliedPointingHandCursor(false),
m_view(view),
m_dolphinViewController(dolphinViewController),
m_toolTipManager(0),
@@ -127,6 +129,10 @@ 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()
@@ -156,9 +162,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 +253,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<DolphinSortFilterProxyModel*>(m_view->model());
diff --git a/src/views/viewextensionsfactory.h b/src/views/viewextensionsfactory.h
index 9324932ac..0ab3d06d0 100644
--- a/src/views/viewextensionsfactory.h
+++ b/src/views/viewextensionsfactory.h
@@ -85,11 +85,14 @@ private slots:
void slotNameFilterChanged(const QString& nameFilter);
void slotRequestVersionControlActions(const KFileItemList& items);
void requestActivation();
+ void applyPointingHandCursor();
+ void restoreCursor();
private:
DolphinSortFilterProxyModel* proxyModel() const;
private:
+ bool m_appliedPointingHandCursor;
QAbstractItemView* m_view;
DolphinViewController* m_dolphinViewController;
ToolTipManager* m_toolTipManager;