]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/draganddrophelper.cpp
Merge remote-tracking branch 'fork/work/zakharafoniam/useful-groups'
[dolphin.git] / src / views / draganddrophelper.cpp
index efdec5b92c73e4d7b6975069e2c183948663fc34..7b9949df4db17408537aa9743a69504d61c95c14 100644 (file)
@@ -52,7 +52,12 @@ KIO::DropJob *DragAndDropHelper::dropUrls(const QUrl &destUrl, QDropEvent *event
             return nullptr;
         }
 
-        if (supportsDropping(destUrl)) {
+        // TODO: remove this check once Qt is fixed so that it doesn't emit a QDropEvent on Wayland
+        // when we called QDragMoveEvent::ignore()
+        // https://codereview.qt-project.org/c/qt/qtwayland/+/541750
+        KFileItem item(destUrl);
+        // KFileItem(QUrl) only stat local URLs, so we always allow dropping on non-local URLs
+        if (!item.isLocalFile() || supportsDropping(item)) {
             // Drop into a directory or a desktop-file
             KIO::DropJob *job = KIO::drop(event, destUrl);
             KJobWidgets::setWindow(job, window);
@@ -63,12 +68,6 @@ KIO::DropJob *DragAndDropHelper::dropUrls(const QUrl &destUrl, QDropEvent *event
     return nullptr;
 }
 
-bool DragAndDropHelper::supportsDropping(const QUrl &destUrl)
-{
-    KFileItem item(destUrl);
-    return supportsDropping(item);
-}
-
 bool DragAndDropHelper::supportsDropping(const KFileItem &destItem)
 {
     return (destItem.isDir() && destItem.isWritable()) || destItem.isDesktopFile();
@@ -80,7 +79,8 @@ void DragAndDropHelper::updateDropAction(QDropEvent *event, const QUrl &destUrl)
         event->setDropAction(Qt::IgnoreAction);
         event->ignore();
     }
-    if (supportsDropping(destUrl)) {
+    KFileItem item(destUrl);
+    if (!item.isLocalFile() || supportsDropping(item)) {
         event->setDropAction(event->proposedAction());
         event->accept();
     } else {