X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e5abfc486b74749afb2239055653852b69a57ba9..f96f6a880c6e7127bb9fe7aa7268d984dafdc7af:/src/stc/ScintillaWX.cpp diff --git a/src/stc/ScintillaWX.cpp b/src/stc/ScintillaWX.cpp index 9cd4ec7a1e..3f2b272c81 100644 --- a/src/stc/ScintillaWX.cpp +++ b/src/stc/ScintillaWX.cpp @@ -14,7 +14,21 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// -#include "wx/wx.h" +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#if wxUSE_STC + +#ifndef WX_PRECOMP + #include "wx/scrolbar.h" + #include "wx/menu.h" + #include "wx/timer.h" +#endif // WX_PRECOMP + #include "wx/textbuf.h" #include "wx/dataobj.h" #include "wx/clipbrd.h" @@ -23,6 +37,7 @@ #include "ScintillaWX.h" #include "ExternalLexer.h" #include "wx/stc/stc.h" +#include "wx/stc/private.h" #include "PlatWX.h" #ifdef __WXMSW__ @@ -36,67 +51,51 @@ class wxSTCTimer : public wxTimer { public: wxSTCTimer(ScintillaWX* swx) { - this->swx = swx; + m_swx = swx; } void Notify() { - swx->DoTick(); + m_swx->DoTick(); } private: - ScintillaWX* swx; + ScintillaWX* m_swx; }; #if wxUSE_DRAG_AND_DROP -class wxStartDragTimer : public wxTimer { -public: - wxStartDragTimer(ScintillaWX* swx) { - this->swx = swx; - } - - void Notify() { - swx->DoStartDrag(); - } - -private: - ScintillaWX* swx; -}; - - bool wxSTCDropTarget::OnDropText(wxCoord x, wxCoord y, const wxString& data) { - return swx->DoDropText(x, y, data); + return m_swx->DoDropText(x, y, data); } wxDragResult wxSTCDropTarget::OnEnter(wxCoord x, wxCoord y, wxDragResult def) { - return swx->DoDragEnter(x, y, def); + return m_swx->DoDragEnter(x, y, def); } wxDragResult wxSTCDropTarget::OnDragOver(wxCoord x, wxCoord y, wxDragResult def) { - return swx->DoDragOver(x, y, def); + return m_swx->DoDragOver(x, y, def); } void wxSTCDropTarget::OnLeave() { - swx->DoDragLeave(); + m_swx->DoDragLeave(); } #endif // wxUSE_DRAG_AND_DROP -#if wxUSE_POPUPWIN && wxSTC_USE_POPUP -#include +#if wxUSE_POPUPWIN +#include "wx/popupwin.h" #define wxSTCCallTipBase wxPopupWindow -#define param2 wxBORDER_NONE // popup's 2nd param is flags #else +#include "wx/frame.h" #define wxSTCCallTipBase wxFrame -#define param2 -1 // wxWindow's 2nd param is ID #endif -#include +#include "wx/dcbuffer.h" class wxSTCCallTip : public wxSTCCallTipBase { public: wxSTCCallTip(wxWindow* parent, CallTip* ct, ScintillaWX* swx) : -#if wxUSE_POPUPWIN && wxSTC_USE_POPUP +#if wxUSE_POPUPWIN wxSTCCallTipBase(parent, wxBORDER_NONE), #else wxSTCCallTipBase(parent, -1, wxEmptyString, wxDefaultPosition, wxDefaultSize, @@ -110,10 +109,11 @@ public: #endif m_ct(ct), m_swx(swx), m_cx(wxDefaultCoord), m_cy(wxDefaultCoord) { + SetBackgroundStyle(wxBG_STYLE_CUSTOM); } ~wxSTCCallTip() { -#if wxUSE_POPUPWIN && wxSTC_USE_POPUP && defined(__WXGTK__) +#if wxUSE_POPUPWIN && defined(__WXGTK__) wxRect rect = GetRect(); rect.x = m_cx; rect.y = m_cy; @@ -125,7 +125,7 @@ public: void OnPaint(wxPaintEvent& WXUNUSED(evt)) { - wxBufferedPaintDC dc(this); + wxAutoBufferedPaintDC dc(this); Surface* surfaceWindow = Surface::Allocate(); surfaceWindow->Init(&dc, m_ct->wDraw.GetID()); m_ct->PaintCT(surfaceWindow); @@ -163,7 +163,7 @@ public: wxSTCCallTipBase::DoSetSize(x, y, width, height, sizeFlags); } -#if wxUSE_POPUPWIN && wxSTC_USE_POPUP +#if wxUSE_POPUPWIN #else virtual bool Show( bool show = true ) { @@ -245,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(); } @@ -286,15 +280,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); @@ -315,10 +300,11 @@ void ScintillaWX::DoStartDrag() { source.SetData(data); dropWentOutside = true; + inDragDrop = ddDragging; result = source.DoDragDrop(evt.GetDragAllowMove()); if (result == wxDragMove && dropWentOutside) ClearSelection(); - inDragDrop = false; + inDragDrop = ddNone; SetDragPosition(invalidPosition); } #endif // wxUSE_DRAG_AND_DROP @@ -537,6 +523,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)); @@ -863,14 +852,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) { @@ -1113,7 +1094,7 @@ void ScintillaWX::ClipChildren(wxDC& WXUNUSED(dc), PRectangle WXUNUSED(rect)) // if (ct.inCallTipMode) { // wxSTCCallTip* tip = (wxSTCCallTip*)ct.wCallTip.GetID(); // wxRect childRect = tip->GetRect(); -// #if wxUSE_POPUPWIN && wxSTC_USE_POPUP +// #if wxUSE_POPUPWIN // childRect.SetPosition(tip->GetMyPosition()); // #endif // rgn.Subtract(childRect); @@ -1133,3 +1114,5 @@ bool ScintillaWX::GetUseAntiAliasing() { //---------------------------------------------------------------------- //---------------------------------------------------------------------- + +#endif // wxUSE_STC