void wxSTCDropTarget::OnLeave() {
swx->DoDragLeave();
}
-#endif
+#endif // wxUSE_DRAG_AND_DROP
#if wxUSE_POPUPWIN && wxSTC_USE_POPUP
#endif
#if wxUSE_DRAG_AND_DROP
startDragTimer = new wxStartDragTimer(this);
-#endif
+#endif // wxUSE_DRAG_AND_DROP
}
ScintillaWX::~ScintillaWX() {
+#if wxUSE_DRAG_AND_DROP
delete startDragTimer;
- Finalise();
+#endif // wxUSE_DRAG_AND_DROP
+ Finalise();
}
//----------------------------------------------------------------------
dropTarget = new wxSTCDropTarget;
dropTarget->SetScintilla(this);
stc->SetDropTarget(dropTarget);
-#endif
+#endif // wxUSE_DRAG_AND_DROP
#ifdef __WXMAC__
vs.extraFontFlag = false; // UseAntiAliasing
#else
// We defer the starting of the DnD, otherwise the LeftUp of a normal
// click could be lost and the STC will think it is doing a DnD when the
// user just wanted a normal click.
- startDragTimer->Start(100, true);
-#endif
+ startDragTimer->Start(200, true);
+#endif // wxUSE_DRAG_AND_DROP
}
void ScintillaWX::DoStartDrag() {
+#if wxUSE_DRAG_AND_DROP
wxString dragText = stc2wx(drag.s, drag.len);
// Send an event to allow the drag text to be changed
stc->GetEventHandler()->ProcessEvent(evt);
dragText = evt.GetDragText();
- if (dragText.Length()) {
+ if (dragText.length()) {
wxDropSource source(stc);
wxTextDataObject data(dragText);
wxDragResult result;
inDragDrop = false;
SetDragPosition(invalidPosition);
}
+#endif // wxUSE_DRAG_AND_DROP
}
wxString text = wxTextBuffer::Translate(data.GetText(),
wxConvertEOLMode(pdoc->eolMode));
wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(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);
}
}
void ScintillaWX::DoLeftButtonUp(Point pt, unsigned int curTime, bool ctrl) {
+ ButtonUp(pt, curTime, ctrl);
#if wxUSE_DRAG_AND_DROP
if (startDragTimer->IsRunning()) {
startDragTimer->Stop();
- SetEmptySelection(PositionFromLocation(pt));
+ SetDragPosition(invalidPosition);
+ SetEmptySelection(PositionFromLocation(pt));
+ ShowCaretAtCurrentPosition();
}
-#endif
- ButtonUp(pt, curTime, ctrl);
+#endif // wxUSE_DRAG_AND_DROP
}
void ScintillaWX::DoLeftButtonMove(Point pt) {
case WXK_RIGHT: key = SCK_RIGHT; break;
case WXK_HOME: key = SCK_HOME; break;
case WXK_END: key = SCK_END; break;
- case WXK_PAGEUP: // fall through
- case WXK_PRIOR: key = SCK_PRIOR; break;
- case WXK_PAGEDOWN: // fall through
- case WXK_NEXT: key = SCK_NEXT; break;
+ case WXK_PAGEUP: key = SCK_PRIOR; break;
+ case WXK_PAGEDOWN: key = SCK_NEXT; break;
+ case WXK_NUMPAD_DOWN: key = SCK_DOWN; break;
+ case WXK_NUMPAD_UP: key = SCK_UP; break;
+ case WXK_NUMPAD_LEFT: key = SCK_LEFT; break;
+ case WXK_NUMPAD_RIGHT: key = SCK_RIGHT; break;
+ case WXK_NUMPAD_HOME: key = SCK_HOME; break;
+ case WXK_NUMPAD_END: key = SCK_END; break;
+ case WXK_NUMPAD_PAGEUP: key = SCK_PRIOR; break;
+ case WXK_NUMPAD_PAGEDOWN: key = SCK_NEXT; break;
case WXK_DELETE: key = SCK_DELETE; break;
case WXK_INSERT: key = SCK_INSERT; break;
case WXK_ESCAPE: key = SCK_ESCAPE; break;
void ScintillaWX::DoDragLeave() {
SetDragPosition(invalidPosition);
}
-#endif
+#endif // wxUSE_DRAG_AND_DROP
//----------------------------------------------------------------------
// Force the whole window to be repainted