aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32/ScintillaWin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'win32/ScintillaWin.cxx')
-rw-r--r--win32/ScintillaWin.cxx23
1 files changed, 12 insertions, 11 deletions
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx
index b10193d4c..120df13eb 100644
--- a/win32/ScintillaWin.cxx
+++ b/win32/ScintillaWin.cxx
@@ -141,6 +141,7 @@ class ScintillaWin :
virtual void NotifyParent(SCNotification scn);
virtual void NotifyDoubleClick(Point pt, bool shift);
virtual void Copy();
+ virtual bool CanPaste();
virtual void Paste();
virtual void CreateCallTipWindow(PRectangle rc);
virtual void AddToPopUp(const char *label, int cmd = 0, bool enabled = true);
@@ -553,7 +554,7 @@ LRESULT ScintillaWin::WndProc(unsigned int iMessage, unsigned long wParam, long
return ::DefWindowProc(wMain.GetID(), iMessage, wParam, lParam);
case WM_IME_CHAR: {
- AddCharBytes(HIBYTE(wParam), LOBYTE(wParam));
+ AddCharBytes(HIBYTE(wParam), LOBYTE(wParam));
return 0;
}
@@ -565,16 +566,8 @@ LRESULT ScintillaWin::WndProc(unsigned int iMessage, unsigned long wParam, long
#endif
break;
- case EM_CANPASTE: {
- ::OpenClipboard(wMain.GetID());
- HGLOBAL hmemSelection = ::GetClipboardData(CF_TEXT);
- if (!hmemSelection && IsUnicodeMode())
- hmemSelection = ::GetClipboardData(CF_UNICODETEXT);
- if (hmemSelection)
- ::GlobalUnlock(hmemSelection);
- ::CloseClipboard();
- return hmemSelection != 0;
- }
+ case EM_CANPASTE:
+ return CanPaste();
case EM_SCROLL: {
int topStart = topLine;
@@ -753,6 +746,14 @@ void ScintillaWin::Copy() {
}
}
+bool ScintillaWin::CanPaste() {
+ if (::IsClipboardFormatAvailable(CF_TEXT))
+ return true;
+ if (IsUnicodeMode())
+ return ::IsClipboardFormatAvailable(CF_UNICODETEXT);
+ return false;
+}
+
void ScintillaWin::Paste() {
pdoc->BeginUndoAction();
int selStart = SelectionStart();