Commit 6d9e3c8a authored by Thorbjørn Lindeijer's avatar Thorbjørn Lindeijer
Browse files

Dropping files into the editor shouldn't insert file:///...

On some desktop environments, dragging and dropping a file gives us
the url to the file in multiple mime types, including text/plain. This
causes the url to be inserted as text by default.

Work around this issue by explicitly ignoring drop events for the text
editor when they also come with urls.

Task-number: QTCREATORBUG-728
Reviewed-by: Friedemann Kleint
parent e6df83b3
...@@ -101,8 +101,6 @@ extern "C" void handleSigInt(int sig) ...@@ -101,8 +101,6 @@ extern "C" void handleSigInt(int sig)
using namespace Core; using namespace Core;
using namespace Core::Internal; using namespace Core::Internal;
static const char *uriListMimeFormatC = "text/uri-list";
enum { debugMainWindow = 0 }; enum { debugMainWindow = 0 };
MainWindow::MainWindow() : MainWindow::MainWindow() :
...@@ -358,7 +356,7 @@ static bool isDesktopFileManagerDrop(const QMimeData *d, QStringList *files = 0) ...@@ -358,7 +356,7 @@ static bool isDesktopFileManagerDrop(const QMimeData *d, QStringList *files = 0)
if (files) if (files)
files->clear(); files->clear();
// Extract dropped files from Mime data. // Extract dropped files from Mime data.
if (!d->hasFormat(QLatin1String(uriListMimeFormatC))) if (!d->hasUrls())
return false; return false;
const QList<QUrl> urls = d->urls(); const QList<QUrl> urls = d->urls();
if (urls.empty()) if (urls.empty())
......
...@@ -3388,6 +3388,17 @@ void BaseTextEditor::keyReleaseEvent(QKeyEvent *e) ...@@ -3388,6 +3388,17 @@ void BaseTextEditor::keyReleaseEvent(QKeyEvent *e)
QPlainTextEdit::keyReleaseEvent(e); QPlainTextEdit::keyReleaseEvent(e);
} }
void BaseTextEditor::dragEnterEvent(QDragEnterEvent *e)
{
// If the drag event contains URLs, we don't want to insert them as text
if (e->mimeData()->hasUrls()) {
e->ignore();
return;
}
QPlainTextEdit::dragEnterEvent(e);
}
void BaseTextEditor::extraAreaLeaveEvent(QEvent *) void BaseTextEditor::extraAreaLeaveEvent(QEvent *)
{ {
// fake missing mouse move event from Qt // fake missing mouse move event from Qt
......
...@@ -530,6 +530,8 @@ protected: ...@@ -530,6 +530,8 @@ protected:
void leaveEvent(QEvent *); void leaveEvent(QEvent *);
void keyReleaseEvent(QKeyEvent *); void keyReleaseEvent(QKeyEvent *);
void dragEnterEvent(QDragEnterEvent *e);
public: public:
// Returns true if key triggers an indent. // Returns true if key triggers an indent.
virtual bool isElectricCharacter(const QChar &ch) const; virtual bool isElectricCharacter(const QChar &ch) const;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment