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

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)
using namespace Core;
using namespace Core::Internal;
static const char *uriListMimeFormatC = "text/uri-list";
enum { debugMainWindow = 0 };
MainWindow::MainWindow() :
......@@ -358,7 +356,7 @@ static bool isDesktopFileManagerDrop(const QMimeData *d, QStringList *files = 0)
if (files)
files->clear();
// Extract dropped files from Mime data.
if (!d->hasFormat(QLatin1String(uriListMimeFormatC)))
if (!d->hasUrls())
return false;
const QList<QUrl> urls = d->urls();
if (urls.empty())
......
......@@ -3388,6 +3388,17 @@ void BaseTextEditor::keyReleaseEvent(QKeyEvent *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 *)
{
// fake missing mouse move event from Qt
......
......@@ -530,6 +530,8 @@ protected:
void leaveEvent(QEvent *);
void keyReleaseEvent(QKeyEvent *);
void dragEnterEvent(QDragEnterEvent *e);
public:
// Returns true if key triggers an indent.
virtual bool isElectricCharacter(const QChar &ch) const;
......
Markdown is supported
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