From 3508a09010623f3be3fed78aedf30bc50b7aa2aa Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 15 Nov 2016 15:58:51 +0100 Subject: [PATCH] Fix that files could not be dropped onto welcome screen Needs to be implemented in Qt Quick itself nowadays. Task-number: QTCREATORBUG-14194 Change-Id: I0456dc5d86c03672d8b6b8f9c45799851db1b059 Reviewed-by: Thomas Hartmann --- share/qtcreator/welcomescreen/welcomescreen.qml | 10 ++++++++++ src/plugins/welcome/welcomeplugin.cpp | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/share/qtcreator/welcomescreen/welcomescreen.qml b/share/qtcreator/welcomescreen/welcomescreen.qml index 62f3ccee547..36489f8e13b 100644 --- a/share/qtcreator/welcomescreen/welcomescreen.qml +++ b/share/qtcreator/welcomescreen/welcomescreen.qml @@ -33,6 +33,16 @@ Item { property int screenDependHeightDistance: Math.min(50, Math.max(16, height / 30)) + DropArea { + anchors.fill: parent + keys: ["text/uri-list"] + onDropped: { + if ((drop.supportedActions & Qt.CopyAction != 0) + && welcomeMode.openDroppedFiles(drop.urls)) + drop.accept(Qt.CopyAction); + } + } + SideBar { id: sideBar model: pagesModel diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp index 884eeb30db5..bb445eb6361 100644 --- a/src/plugins/welcome/welcomeplugin.cpp +++ b/src/plugins/welcome/welcomeplugin.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -135,6 +136,8 @@ public: QStringList recentProjectsShortcuts() const { return m_recentProjectsShortcuts; } QStringList sessionsShortcuts() const { return m_sessionsShortcuts; } + Q_INVOKABLE bool openDroppedFiles(const QList &urls); + public slots: void setActivePlugin(int pos) { @@ -307,6 +310,18 @@ void WelcomeMode::initPlugins() m_welcomePage->setSource(QUrl::fromLocalFile(path)); } +bool WelcomeMode::openDroppedFiles(const QList &urls) +{ + const QList localUrls = Utils::filtered(urls, &QUrl::isLocalFile); + if (!localUrls.isEmpty()) { + QTimer::singleShot(0, [localUrls]() { + ICore::openFiles(Utils::transform(localUrls, &QUrl::toLocalFile), ICore::SwitchMode); + }); + return true; + } + return false; +} + void WelcomeMode::welcomePluginAdded(QObject *obj) { IWelcomePage *page = qobject_cast(obj);