diff options
Diffstat (limited to 'WebCore/platform/win')
-rw-r--r-- | WebCore/platform/win/ClipboardWin.cpp | 19 | ||||
-rw-r--r-- | WebCore/platform/win/ClipboardWin.h | 1 |
2 files changed, 20 insertions, 0 deletions
diff --git a/WebCore/platform/win/ClipboardWin.cpp b/WebCore/platform/win/ClipboardWin.cpp index f83927d..d61e681 100644 --- a/WebCore/platform/win/ClipboardWin.cpp +++ b/WebCore/platform/win/ClipboardWin.cpp @@ -776,6 +776,25 @@ void ClipboardWin::writeRange(Range* selectedRange, Frame* frame) m_writableDataObject->SetData(smartPasteFormat(), &medium, TRUE); } +void ClipboardWin::writePlainText(const String& text) +{ + if (!m_writableDataObject) + return; + + STGMEDIUM medium = {0}; + medium.tymed = TYMED_HGLOBAL; + ExceptionCode ec = 0; + + String str = text; + replaceNewlinesWithWindowsStyleNewlines(str); + replaceNBSPWithSpace(str); + medium.hGlobal = createGlobalData(str); + if (medium.hGlobal && FAILED(m_writableDataObject->SetData(plainTextWFormat(), &medium, TRUE))) + ::GlobalFree(medium.hGlobal); + + medium.hGlobal = 0; +} + bool ClipboardWin::hasData() { if (!m_dataObject) diff --git a/WebCore/platform/win/ClipboardWin.h b/WebCore/platform/win/ClipboardWin.h index 6e60254..49fdcfe 100644 --- a/WebCore/platform/win/ClipboardWin.h +++ b/WebCore/platform/win/ClipboardWin.h @@ -67,6 +67,7 @@ namespace WebCore { virtual void declareAndWriteDragImage(Element*, const KURL&, const String& title, Frame*); virtual void writeURL(const KURL&, const String&, Frame*); virtual void writeRange(Range*, Frame*); + virtual void writePlainText(const String&); virtual bool hasData(); |