diff --git a/src/Text3.cpp b/src/Text3.cpp index 1cba2af9de..24e6b5e19b 100644 --- a/src/Text3.cpp +++ b/src/Text3.cpp @@ -1021,7 +1021,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd) if (arg.empty()) { if (theClipboard().isInternal()) pasteFromStack(cur, bv->buffer().errorList("Paste"), 0); - else if (theClipboard().hasGraphicsContents()) + else if (theClipboard().hasGraphicsContents() + && !theClipboard().hasTextContents()) pasteClipboardGraphics(cur, bv->buffer().errorList("Paste")); else pasteClipboardText(cur, bv->buffer().errorList("Paste")); diff --git a/src/frontends/Clipboard.h b/src/frontends/Clipboard.h index cdbe98b9a6..7235b01013 100644 --- a/src/frontends/Clipboard.h +++ b/src/frontends/Clipboard.h @@ -69,6 +69,8 @@ public: /// Does the clipboard contain LyX contents? virtual bool hasLyXContents() const = 0; + /// Does the clipboard contain text contents? + virtual bool hasTextContents() const = 0; /// Does the clipboard contain graphics contents of a certain type? virtual bool hasGraphicsContents(GraphicsType type = AnyGraphicsType) const = 0; /// state of clipboard. diff --git a/src/frontends/qt4/GuiClipboard.cpp b/src/frontends/qt4/GuiClipboard.cpp index 0979d1f7ad..ed1f492858 100644 --- a/src/frontends/qt4/GuiClipboard.cpp +++ b/src/frontends/qt4/GuiClipboard.cpp @@ -342,6 +342,14 @@ bool GuiClipboard::hasLyXContents() const } +bool GuiClipboard::hasTextContents() const +{ + QMimeData const * const source = + qApp->clipboard()->mimeData(QClipboard::Clipboard); + return source->hasText(); +} + + bool GuiClipboard::hasGraphicsContents(Clipboard::GraphicsType type) const { if (type == AnyGraphicsType) { diff --git a/src/frontends/qt4/GuiClipboard.h b/src/frontends/qt4/GuiClipboard.h index 40fa01e386..d0552a8281 100644 --- a/src/frontends/qt4/GuiClipboard.h +++ b/src/frontends/qt4/GuiClipboard.h @@ -41,6 +41,7 @@ public: void put(std::string const & lyx, docstring const & text); bool hasLyXContents() const; bool hasGraphicsContents(GraphicsType type = AnyGraphicsType) const; + bool hasTextContents() const; bool isInternal() const; bool hasInternal() const; bool empty() const;