┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
diff options
context:
space:
mode:
Diffstat (limited to 'src/kitemviews')
-rw-r--r--src/kitemviews/kfileitemmodel.cpp11
-rw-r--r--src/kitemviews/kfileitemmodel.h2
-rw-r--r--src/kitemviews/kitemlistcontroller.cpp3
-rw-r--r--src/kitemviews/kitemmodelbase.cpp6
-rw-r--r--src/kitemviews/kitemmodelbase.h9
5 files changed, 30 insertions, 1 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp
index 9ef66d6b8..c694da9f2 100644
--- a/src/kitemviews/kfileitemmodel.cpp
+++ b/src/kitemviews/kfileitemmodel.cpp
@@ -352,6 +352,17 @@ bool KFileItemModel::supportsDropping(int index) const
return !item.isNull() && DragAndDropHelper::supportsDropping(item);
}
+bool KFileItemModel::canEnterOnHover(int index) const
+{
+ KFileItem item;
+ if (index == -1) {
+ item = rootItem();
+ } else {
+ item = fileItem(index);
+ }
+ return !item.isNull() && (item.isDir() || item.isDesktopFile());
+}
+
QString KFileItemModel::roleDescription(const QByteArray &role) const
{
static QHash<QByteArray, QString> description;
diff --git a/src/kitemviews/kfileitemmodel.h b/src/kitemviews/kfileitemmodel.h
index ad1b0a138..ce58f89ac 100644
--- a/src/kitemviews/kfileitemmodel.h
+++ b/src/kitemviews/kfileitemmodel.h
@@ -109,6 +109,8 @@ public:
bool supportsDropping(int index) const override;
+ bool canEnterOnHover(int index) const override;
+
QString roleDescription(const QByteArray &role) const override;
QList<QPair<int, QVariant>> groups() const override;
diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp
index aea59c711..2a0641aa1 100644
--- a/src/kitemviews/kitemlistcontroller.cpp
+++ b/src/kitemviews/kitemlistcontroller.cpp
@@ -827,11 +827,12 @@ bool KItemListController::dragMoveEvent(QGraphicsSceneDragDropEvent *event, cons
Q_EMIT itemHovered(index);
}
- if (!m_autoActivationTimer->isActive() && m_autoActivationTimer->interval() >= 0) {
+ if (!m_autoActivationTimer->isActive() && m_autoActivationTimer->interval() >= 0 && m_model->canEnterOnHover(index)) {
m_autoActivationTimer->setProperty("index", index);
m_autoActivationTimer->start();
newHoveredWidget->startActivateSoonAnimation(m_autoActivationTimer->remainingTime());
}
+
} else {
m_autoActivationTimer->stop();
if (newHoveredWidget && newHoveredWidget->isHovered()) {
diff --git a/src/kitemviews/kitemmodelbase.cpp b/src/kitemviews/kitemmodelbase.cpp
index b49d4ebb1..9fdecafb8 100644
--- a/src/kitemviews/kitemmodelbase.cpp
+++ b/src/kitemviews/kitemmodelbase.cpp
@@ -128,6 +128,12 @@ bool KItemModelBase::supportsDropping(int index) const
return false;
}
+bool KItemModelBase::canEnterOnHover(int index) const
+{
+ Q_UNUSED(index)
+ return false;
+}
+
QString KItemModelBase::blacklistItemDropEventMimeType() const
{
return QStringLiteral("application/x-dolphin-blacklist-drop");
diff --git a/src/kitemviews/kitemmodelbase.h b/src/kitemviews/kitemmodelbase.h
index 4e1fd8a8f..42a9c54c9 100644
--- a/src/kitemviews/kitemmodelbase.h
+++ b/src/kitemviews/kitemmodelbase.h
@@ -160,6 +160,15 @@ public:
virtual bool supportsDropping(int index) const;
/**
+ * @return True, if the item with the index \a index can be entered in during hover actions.
+ * Per default false is returned.
+ *
+ * This is used to check that if the item
+ * we're hovering on is either directory or a desktop file.
+ */
+ virtual bool canEnterOnHover(int index) const;
+
+ /**
* @return An internal mimetype to signal that an itemDropEvent() should be rejected by
* the receiving model.
*