diff options
-rw-r--r-- | doc/ScintillaHistory.html | 4 | ||||
-rw-r--r-- | win32/ScintillaWin.cxx | 46 |
2 files changed, 5 insertions, 45 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index 10b4b7f1c..f1fa9c3b9 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -592,6 +592,10 @@ Don't clear clipboard before copying text with Qt. <a href="https://sourceforge.net/p/scintilla/bugs/2147/">Bug #2147</a>. </li> + <li> + On Win32, remove support for CF_TEXT clipboard format as Windows will convert to + CF_UNICODETEXT. + </li> </ul> <h3> <a href="https://www.scintilla.org/scite423.zip">Release 4.2.3</a> diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index 99a54c1aa..6847d4a83 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -2206,11 +2206,7 @@ void ScintillaWin::CopyAllowLine() { bool ScintillaWin::CanPaste() { if (!Editor::CanPaste()) return false; - if (::IsClipboardFormatAvailable(CF_TEXT)) - return true; - if (IsUnicodeMode()) - return ::IsClipboardFormatAvailable(CF_UNICODETEXT) != 0; - return false; + return ::IsClipboardFormatAvailable(CF_UNICODETEXT) != FALSE; } namespace { @@ -2324,38 +2320,6 @@ void ScintillaWin::Paste() { InsertPasteShape(&putf[0], len, pasteShape); } memUSelection.Unlock(); - } else { - // CF_UNICODETEXT not available, paste ANSI text - GlobalMemory memSelection(::GetClipboardData(CF_TEXT)); - if (memSelection) { - const char *ptr = static_cast<const char *>(memSelection.ptr); - if (ptr) { - const size_t bytes = memSelection.Size(); - size_t len = bytes; - for (size_t i = 0; i < bytes; i++) { - if ((len == bytes) && (0 == ptr[i])) - len = i; - } - - // In Unicode mode, convert clipboard text to UTF-8 - if (IsUnicodeMode()) { - std::vector<wchar_t> uptr(len+1); - - const size_t ulen = WideCharFromMultiByte(CP_ACP, - std::string_view(ptr, len), &uptr[0], len + 1); - - const std::wstring_view wsv(&uptr[0], ulen); - const size_t mlen = UTF8Length(wsv); - std::vector<char> putf(mlen+1); - UTF8FromUTF16(wsv, &putf[0], mlen); - - InsertPasteShape(&putf[0], mlen, pasteShape); - } else { - InsertPasteShape(ptr, len, pasteShape); - } - } - memSelection.Unlock(); - } } ::CloseClipboard(); Redraw(); @@ -2867,14 +2831,6 @@ void ScintillaWin::CopyToClipboard(const SelectionText &selectedText) { if (uniText) { uniText.SetClip(CF_UNICODETEXT); - } else { - // There was a failure - try to copy at least ANSI text - GlobalMemory ansiText; - ansiText.Allocate(selectedText.LengthWithTerminator()); - if (ansiText) { - memcpy(ansiText.ptr, selectedText.Data(), selectedText.LengthWithTerminator()); - ansiText.SetClip(CF_TEXT); - } } if (selectedText.rectangular) { |