diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bc6f75d628..13b94f73b4 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -180,6 +180,8 @@ set(dolphinpart_SRCS
dolphindebug.cpp
)
+qt5_add_resources(dolphinpart_SRCS dolphinpart.qrc)
+
add_library(dolphinpart MODULE ${dolphinpart_SRCS})
target_link_libraries(dolphinpart
@@ -188,7 +190,6 @@ target_link_libraries(dolphinpart
install(TARGETS dolphinpart DESTINATION ${KDE_INSTALL_PLUGINDIR})
-install(FILES dolphinpart.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/dolphinpart)
install(FILES dolphinpart.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR})
##########################################
@@ -267,6 +268,8 @@ if(NOT WIN32)
set(dolphinstatic_SRCS ${dolphinstatic_SRCS} panels/terminal/terminalpanel.cpp)
endif()
+qt5_add_resources(dolphinstatic_SRCS dolphin.qrc)
+
add_library(dolphinstatic STATIC ${dolphinstatic_SRCS})
target_include_directories(dolphinstatic PRIVATE ${PHONON_INCLUDES})
@@ -389,7 +392,6 @@ install( FILES settings/dolphin_directoryviewpropertysettings.kcfg
settings/dolphin_detailsmodesettings.kcfg
settings/dolphin_versioncontrolsettings.kcfg
DESTINATION ${KDE_INSTALL_KCFGDIR} )
-install( FILES dolphinui.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/dolphin )
install( FILES org.kde.dolphin.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} )
install( FILES settings/kcm/kcmdolphinviewmodes.desktop DESTINATION
${KDE_INSTALL_KSERVICES5DIR} )
diff --git a/src/dolphin.qrc b/src/dolphin.qrc
new file mode 100644
index 0000000000..55cae54b95
--- /dev/null
+++ b/src/dolphin.qrc
@@ -0,0 +1,5 @@
+
+
+dolphinui.rc
+
+
diff --git a/src/dolphinpart.qrc b/src/dolphinpart.qrc
new file mode 100644
index 0000000000..b525da13ab
--- /dev/null
+++ b/src/dolphinpart.qrc
@@ -0,0 +1,5 @@
+
+
+dolphinpart.rc
+
+
diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp
index 94b7a0144c..d9b7d7e13e 100644
--- a/src/dolphintabwidget.cpp
+++ b/src/dolphintabwidget.cpp
@@ -284,7 +284,7 @@ void DolphinTabWidget::tabDropEvent(int index, QDropEvent* event)
{
if (index >= 0) {
DolphinView* view = tabPageAt(index)->activeViewContainer()->view();
- view->dropUrls(view->url(), event);
+ view->dropUrls(view->url(), event, view);
}
}
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp
index 72ced931b7..198879f377 100644
--- a/src/dolphinviewcontainer.cpp
+++ b/src/dolphinviewcontainer.cpp
@@ -29,6 +29,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -135,8 +136,14 @@ DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) :
this, &DolphinViewContainer::slotUrlNavigatorLocationChanged);
connect(m_urlNavigator, &KUrlNavigator::returnPressed,
this, &DolphinViewContainer::slotReturnPressed);
- connect(m_urlNavigator, &KUrlNavigator::urlsDropped,
- m_view, &DolphinView::dropUrls);
+ connect(m_urlNavigator, &KUrlNavigator::urlsDropped, this, [=](const QUrl &destination, QDropEvent *event) {
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 37, 0)
+ m_view->dropUrls(destination, event, m_urlNavigator->dropWidget());
+#else
+ // TODO: remove as soon as we can hard-depend of KF5 >= 5.37
+ m_view->dropUrls(destination, event, m_view);
+#endif
+ });
// Initialize status bar
m_statusBar = new DolphinStatusBar(this);
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp
index bef6a8b73a..5fcec92412 100644
--- a/src/views/dolphinview.cpp
+++ b/src/views/dolphinview.cpp
@@ -1051,14 +1051,14 @@ void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even
event->mimeData(),
event->buttons(),
event->modifiers());
- dropUrls(destUrl, &dropEvent);
+ dropUrls(destUrl, &dropEvent, this);
setActive(true);
}
-void DolphinView::dropUrls(const QUrl &destUrl, QDropEvent *dropEvent)
+void DolphinView::dropUrls(const QUrl &destUrl, QDropEvent *dropEvent, QWidget *dropWidget)
{
- KIO::DropJob* job = DragAndDropHelper::dropUrls(destUrl, dropEvent, this);
+ KIO::DropJob* job = DragAndDropHelper::dropUrls(destUrl, dropEvent, dropWidget);
if (job) {
connect(job, &KIO::DropJob::result, this, &DolphinView::slotPasteJobResult);
diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h
index 6b62b5da68..5c832efd1f 100644
--- a/src/views/dolphinview.h
+++ b/src/views/dolphinview.h
@@ -363,9 +363,9 @@ public slots:
void pasteIntoFolder();
/**
- * Handles a drop of @p dropEvent onto @p destUrl
+ * Handles a drop of @p dropEvent onto widget @p dropWidget and destination @p destUrl
*/
- void dropUrls(const QUrl &destUrl, QDropEvent *dropEvent);
+ void dropUrls(const QUrl &destUrl, QDropEvent *dropEvent, QWidget *dropWidget);
void stopLoading();
diff --git a/src/views/draganddrophelper.h b/src/views/draganddrophelper.h
index fe77b1e6ee..3153f06ef0 100644
--- a/src/views/draganddrophelper.h
+++ b/src/views/draganddrophelper.h
@@ -41,7 +41,7 @@ public:
* @param destUrl URL of the item destination. Is used only if destItem::isNull()
* is true.
* @param event Drop event.
- * @param window Associated widget.
+ * @param window Widget where the drop happened, will be used as parent of the drop menu.
* @return KIO::DropJob pointer
*/
static KIO::DropJob* dropUrls(const QUrl& destUrl,