#include <kiconeffect.h>
#include <klocale.h>
+#include <QApplication>
#include <QPainter>
#include <QPaintEvent>
#include <QRect>
QAbstractButton(parent),
m_isHovered(false),
m_leftMouseButtonPressed(false),
+ m_appliedArrowCursor(false),
m_fadingValue(0),
m_margin(0),
m_icon(),
{
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;
void SelectionToggle::leaveEvent(QEvent* event)
{
QAbstractButton::leaveEvent(event);
+
+ if (m_appliedArrowCursor) {
+ QApplication::restoreOverrideCursor();
+ m_appliedArrowCursor = false;
+ }
+
m_isHovered = false;
update();
}
private:
bool m_isHovered;
bool m_leftMouseButtonPressed;
+ bool m_appliedArrowCursor;
int m_fadingValue;
int m_margin;
QPixmap m_icon;
m_fileMetaDataToolTip(0),
m_toolTipRequested(false),
m_metaDataRequested(false),
+ m_appliedWaitCursor(false),
m_item(),
m_itemRect()
{
void ToolTipManager::hideToolTip()
{
- QApplication::restoreOverrideCursor();
+ if (m_appliedWaitCursor) {
+ QApplication::restoreOverrideCursor();
+ m_appliedWaitCursor = false;
+ }
m_toolTipRequested = false;
m_metaDataRequested = false;
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;
}
bool m_toolTipRequested;
bool m_metaDataRequested;
+ bool m_appliedWaitCursor;
KFileItem m_item;
QRect m_itemRect;
};
#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),
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()
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;
}
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());
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;