From dc149ec5e52f52c514cf362603d05ba8eea506b8 Mon Sep 17 00:00:00 2001 From: Jin Liu Date: Thu, 29 Feb 2024 23:13:47 +0000 Subject: DragAndDropHelper::updateDropAction: use StatJob for remote URLs When dragging onto tabs/Places from a remote URL, we don't process the QDropEvent immediately, but start a StatJob and process the event when it finishes. Also, the result of the StatJob is cached for 30 seconds, to avoid starting duplicate jobs. --- src/panels/places/placespanel.cpp | 4 ++-- src/panels/places/placespanel.h | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src/panels') diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index ba3451bd5..eaf2642eb 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -15,7 +15,6 @@ #include "dolphin_placespanelsettings.h" #include "dolphinplacesmodelsingleton.h" #include "settings/dolphinsettingsdialog.h" -#include "views/draganddrophelper.h" #include #include @@ -32,6 +31,7 @@ PlacesPanel::PlacesPanel(QWidget *parent) : KFilePlacesView(parent) + , m_dragAndDropHelper(this) { setDropOnPlaceEnabled(true); connect(this, &PlacesPanel::urlsDropped, this, &PlacesPanel::slotUrlsDropped); @@ -161,7 +161,7 @@ void PlacesPanel::dragMoveEvent(QDragMoveEvent *event) if (!url.isValid() || !KProtocolManager::supportsWriting(url)) { event->setDropAction(Qt::IgnoreAction); } else { - DragAndDropHelper::updateDropAction(event, url); + m_dragAndDropHelper.updateDropAction(event, url); } } } diff --git a/src/panels/places/placespanel.h b/src/panels/places/placespanel.h index cbd5fc224..d21e7d64e 100644 --- a/src/panels/places/placespanel.h +++ b/src/panels/places/placespanel.h @@ -10,6 +10,7 @@ #define PLACESPANEL_H #include "panels/panel.h" +#include "views/draganddrophelper.h" #include #include @@ -78,6 +79,8 @@ private: QAction *m_configureTrashAction; QAction *m_openInSplitView; QAction *m_lockPanelsAction; + + DragAndDropHelper m_dragAndDropHelper; }; #endif // PLACESPANEL_H -- cgit v1.3