X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1c930beb60f14692321b0f7cf1b6054f93053772..25f70bc4a15f46059d2586b8627815978977e711:/src/stc/ScintillaWX.cpp diff --git a/src/stc/ScintillaWX.cpp b/src/stc/ScintillaWX.cpp index a27fe5126b..93893a4541 100644 --- a/src/stc/ScintillaWX.cpp +++ b/src/stc/ScintillaWX.cpp @@ -328,17 +328,16 @@ void ScintillaWX::SetTicking(bool on) { void ScintillaWX::SetMouseCapture(bool on) { if (mouseDownCaptures) { - if (on && !stc->HasCapture()) + if (on && !capturedMouse) stc->CaptureMouse(); - else if (!on && stc->HasCapture()) + else if (!on && capturedMouse && stc->HasCapture()) stc->ReleaseMouse(); - capturedMouse = stc->HasCapture(); + capturedMouse = on; } } bool ScintillaWX::HaveMouseCapture() { - capturedMouse = stc->HasCapture(); return capturedMouse; } @@ -484,11 +483,14 @@ void ScintillaWX::Paste() { if (gotData) { wxString text = wxTextBuffer::Translate(data.GetText(), wxConvertEOLMode(pdoc->eolMode)); - data.SetText(wxEmptyString); // free the data object content wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text); - text = wxEmptyString; // free text - int len = strlen(buf); +#if wxUSE_UNICODE + // free up the old character buffer in case the text is real big + data.SetText(wxEmptyString); + text = wxEmptyString; +#endif + int len = strlen(buf); pdoc->InsertString(currentPos, buf, len); SetEmptySelection(currentPos + len); }