ScintillaWX::~ScintillaWX() {
- SetTicking(false);
+ Finalise();
}
//----------------------------------------------------------------------
void ScintillaWX::Finalise() {
ScintillaBase::Finalise();
+ SetTicking(false);
+ SetIdle(false);
}
}
+bool ScintillaWX::SetIdle(bool on) {
+ if (idler.state != on) {
+ // connect or disconnect the EVT_IDLE handler
+ if (on)
+ stc->Connect(-1, wxEVT_IDLE, (wxObjectEventFunction)&wxStyledTextCtrl::OnIdle);
+ else
+ stc->Disconnect(-1, wxEVT_IDLE, (wxObjectEventFunction)&wxStyledTextCtrl::OnIdle);
+ idler.state = on;
+ }
+ return idler.state;
+}
+
+
void ScintillaWX::SetTicking(bool on) {
wxSTCTimer* steTimer;
if (timer.ticking != on) {
void ScintillaWX::SetMouseCapture(bool on) {
- if (on && !capturedMouse)
- stc->CaptureMouse();
- else if (!on && capturedMouse && stc->HasCapture())
- stc->ReleaseMouse();
- capturedMouse = on;
+ if (mouseDownCaptures) {
+ if (on && !capturedMouse)
+ stc->CaptureMouse();
+ else if (!on && capturedMouse && stc->HasCapture())
+ stc->ReleaseMouse();
+ capturedMouse = on;
+ }
}
delete surfaceWindow;
if (paintState == paintAbandoned) {
// Painting area was insufficient to cover new styling or brace highlight positions
- FullPaint();
+ FullPaint(dc);
}
paintState = notPainting;
}
// Set the current position to the mouse click point and
// then paste in the PRIMARY selection, if any. wxGTK only.
int newPos = PositionFromLocation(pt);
- MovePositionTo(newPos, 0, 1);
+ MovePositionTo(newPos, noSel, true);
pdoc->BeginUndoAction();
wxTextDataObject data;
AutoCompleteCompleted();
}
+
+void ScintillaWX::DoOnIdle(wxIdleEvent& evt) {
+
+ if ( Idle() )
+ evt.RequestMore();
+ else
+ SetIdle(false);
+}
+
//----------------------------------------------------------------------
#if wxUSE_DRAG_AND_DROP
//----------------------------------------------------------------------
// Redraw all of text area. This paint will not be abandoned.
-void ScintillaWX::FullPaint() {
+void ScintillaWX::FullPaint(wxDC *dc) {
+ wxCHECK_RET(dc != NULL, wxT("Invalid wxDC in ScintillaWX::FillPaint"));
paintState = painting;
rcPaint = GetClientRectangle();
paintingAllText = true;
- wxClientDC dc(stc);
Surface* surfaceWindow = Surface::Allocate();
- surfaceWindow->Init(&dc, wMain.GetID());
+ surfaceWindow->Init(dc, wMain.GetID());
- dc.BeginDrawing();
- ClipChildren(dc, rcPaint);
+ dc->BeginDrawing();
+ ClipChildren(*dc, rcPaint);
Paint(surfaceWindow, rcPaint);
- dc.EndDrawing();
+ dc->EndDrawing();
delete surfaceWindow;
paintState = notPainting;