X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c0a4c58aca620b65e3380756642308d66c7f0d9c..eda34276d67de1578a3ed3d727b595b1858a8547:/src/stc/ScintillaWX.cpp diff --git a/src/stc/ScintillaWX.cpp b/src/stc/ScintillaWX.cpp index 62524ee928..0f9a5281ab 100644 --- a/src/stc/ScintillaWX.cpp +++ b/src/stc/ScintillaWX.cpp @@ -64,21 +64,6 @@ private: #if wxUSE_DRAG_AND_DROP -class wxStartDragTimer : public wxTimer { -public: - wxStartDragTimer(ScintillaWX* swx) { - m_swx = swx; - } - - void Notify() { - m_swx->DoStartDrag(); - } - -private: - ScintillaWX* m_swx; -}; - - bool wxSTCDropTarget::OnDropText(wxCoord x, wxCoord y, const wxString& data) { return m_swx->DoDropText(x, y, data); } @@ -118,9 +103,9 @@ public: | wxFRAME_FLOAT_ON_PARENT | wxBORDER_NONE #ifdef __WXMAC__ - | wxPOPUP_WINDOW + | wxPOPUP_WINDOW #endif - ), + ), #endif m_ct(ct), m_swx(swx), m_cx(wxDefaultCoord), m_cy(wxDefaultCoord) { @@ -195,7 +180,7 @@ public: return rv; } #endif - + wxPoint GetMyPosition() { return wxPoint(m_cx, m_cy); @@ -260,16 +245,10 @@ ScintillaWX::ScintillaWX(wxStyledTextCtrl* win) { sysCaretWidth = 0; sysCaretHeight = 0; #endif -#if wxUSE_DRAG_AND_DROP - startDragTimer = new wxStartDragTimer(this); -#endif // wxUSE_DRAG_AND_DROP } ScintillaWX::~ScintillaWX() { -#if wxUSE_DRAG_AND_DROP - delete startDragTimer; -#endif // wxUSE_DRAG_AND_DROP Finalise(); } @@ -284,11 +263,7 @@ void ScintillaWX::Initialise() { dropTarget->SetScintilla(this); stc->SetDropTarget(dropTarget); #endif // wxUSE_DRAG_AND_DROP -#ifdef __WXMAC__ - vs.extraFontFlag = false; // UseAntiAliasing -#else vs.extraFontFlag = true; // UseAntiAliasing -#endif } @@ -301,15 +276,6 @@ void ScintillaWX::Finalise() { void ScintillaWX::StartDrag() { -#if wxUSE_DRAG_AND_DROP - // 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(200, true); -#endif // wxUSE_DRAG_AND_DROP -} - -void ScintillaWX::DoStartDrag() { #if wxUSE_DRAG_AND_DROP wxString dragText = stc2wx(drag.s, drag.len); @@ -330,6 +296,7 @@ void ScintillaWX::DoStartDrag() { source.SetData(data); dropWentOutside = true; + inDragDrop = ddDragging; result = source.DoDragDrop(evt.GetDragAllowMove()); if (result == wxDragMove && dropWentOutside) ClearSelection(); @@ -344,11 +311,9 @@ bool ScintillaWX::SetIdle(bool on) { if (idler.state != on) { // connect or disconnect the EVT_IDLE handler if (on) - stc->Connect(wxID_ANY, wxEVT_IDLE, - (wxObjectEventFunction) (wxEventFunction) (wxIdleEventFunction) &wxStyledTextCtrl::OnIdle); + stc->Connect(wxID_ANY, wxEVT_IDLE, wxIdleEventHandler(wxStyledTextCtrl::OnIdle)); else - stc->Disconnect(wxID_ANY, wxEVT_IDLE, - (wxObjectEventFunction) (wxEventFunction) (wxIdleEventFunction) &wxStyledTextCtrl::OnIdle); + stc->Disconnect(wxID_ANY, wxEVT_IDLE, wxIdleEventHandler(wxStyledTextCtrl::OnIdle)); idler.state = on; } return idler.state; @@ -535,7 +500,7 @@ void ScintillaWX::Paste() { #if wxUSE_UNICODE // free up the old character buffer in case the text is real big - data.SetText(wxEmptyString); + data.SetText(wxEmptyString); text = wxEmptyString; #endif int len = strlen(buf); @@ -552,6 +517,9 @@ void ScintillaWX::Paste() { void ScintillaWX::CopyToClipboard(const SelectionText& st) { #if wxUSE_CLIPBOARD + if ( !st.len ) + return; + wxTheClipboard->UsePrimarySelection(false); if (wxTheClipboard->Open()) { wxString text = wxTextBuffer::Translate(stc2wx(st.s, st.len-1)); @@ -643,8 +611,8 @@ void ScintillaWX::UpdateSystemCaret() { bool ScintillaWX::HasCaretSizeChanged() { #ifdef __WXMSW__ - if (( (0 != vs.caretWidth) && (sysCaretWidth != vs.caretWidth) ) - || (0 != vs.lineHeight) && (sysCaretHeight != vs.lineHeight)) { + if ( (vs.caretWidth && (sysCaretWidth != vs.caretWidth)) + || (vs.lineHeight && (sysCaretHeight != vs.lineHeight)) ) { return true; } #endif @@ -706,12 +674,17 @@ sptr_t ScintillaWX::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) char* defn = reinterpret_cast(lParam); AutoCompleteCancel(); pt.y += vs.lineHeight; + int ctStyle = ct.UseStyleCallTip() ? STYLE_CALLTIP : STYLE_DEFAULT; + if (ct.UseStyleCallTip()) + { + ct.SetForeBack(vs.styles[STYLE_CALLTIP].fore, vs.styles[STYLE_CALLTIP].back); + } PRectangle rc = ct.CallTipStart(currentPos, pt, defn, - vs.styles[STYLE_DEFAULT].fontName, - vs.styles[STYLE_DEFAULT].sizeZoomed, + vs.styles[ctStyle].fontName, + vs.styles[ctStyle].sizeZoomed, CodePage(), - vs.styles[STYLE_DEFAULT].characterSet, + vs.styles[ctStyle].characterSet, wMain); // If the call-tip window would be out of the client // space, adjust so it displays above the text. @@ -878,14 +851,6 @@ void ScintillaWX::DoLeftButtonDown(Point pt, unsigned int curTime, bool shift, b void ScintillaWX::DoLeftButtonUp(Point pt, unsigned int curTime, bool ctrl) { ButtonUp(pt, curTime, ctrl); -#if wxUSE_DRAG_AND_DROP - if (startDragTimer->IsRunning()) { - startDragTimer->Stop(); - SetDragPosition(invalidPosition); - SetEmptySelection(PositionFromLocation(pt)); - ShowCaretAtCurrentPosition(); - } -#endif // wxUSE_DRAG_AND_DROP } void ScintillaWX::DoLeftButtonMove(Point pt) {