From 7d0bbe06dc6e3f69144a5a2c4c697e2d8d0681ec Mon Sep 17 00:00:00 2001 From: Kai Uwe Broulik Date: Thu, 29 Jan 2026 17:20:21 +0100 Subject: Support drop onto executable to run it We already support dropping onto desktop files. This is also something that KDirOperator did but Dolphin does not. --- src/kitemviews/kfileitemmodel.cpp | 2 +- src/views/dolphinview.cpp | 2 +- src/views/draganddrophelper.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index 0958e921f..e4ac1dba0 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -387,7 +387,7 @@ bool KFileItemModel::canEnterOnHover(int index) const } else { item = fileItem(index); } - return !item.isNull() && (item.isDir() || item.isDesktopFile()); + return !item.isNull() && (item.isDir() || item.isDesktopFile() || (item.isFile() && item.isLocalFile() && item.isExecutable())); } QString KFileItemModel::roleDescription(const QByteArray &role) const diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 9ade1e5e9..ec012c679 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -1404,7 +1404,7 @@ void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent *even { QUrl destUrl; KFileItem destItem = m_model->fileItem(index); - if (destItem.isNull() || (!destItem.isDir() && !destItem.isDesktopFile())) { + if (destItem.isNull() || (!destItem.isDir() && !destItem.isDesktopFile() && !destItem.isExecutable())) { // Use the URL of the view as drop target if the item is no directory // or desktop-file destItem = m_model->rootItem(); diff --git a/src/views/draganddrophelper.cpp b/src/views/draganddrophelper.cpp index 7b9949df4..7b0e8ef66 100644 --- a/src/views/draganddrophelper.cpp +++ b/src/views/draganddrophelper.cpp @@ -70,7 +70,7 @@ KIO::DropJob *DragAndDropHelper::dropUrls(const QUrl &destUrl, QDropEvent *event bool DragAndDropHelper::supportsDropping(const KFileItem &destItem) { - return (destItem.isDir() && destItem.isWritable()) || destItem.isDesktopFile(); + return (destItem.isDir() && destItem.isWritable()) || destItem.isDesktopFile() || (destItem.isFile() && destItem.isLocalFile() && destItem.isExecutable()); } void DragAndDropHelper::updateDropAction(QDropEvent *event, const QUrl &destUrl) -- cgit v1.3