X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/c9c3531c0b6da07de8f90761a3d799ace62f8e89..fc56f8f2f92b98ccb9a1da0ffcbb57d723dc33bb:/src/views/draganddrophelper.cpp?ds=sidebyside diff --git a/src/views/draganddrophelper.cpp b/src/views/draganddrophelper.cpp index efdec5b92..7b9949df4 100644 --- a/src/views/draganddrophelper.cpp +++ b/src/views/draganddrophelper.cpp @@ -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 {