// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
-#include <ctype.h>
#include "ScintillaWX.h"
#include "wx/stc/stc.h"
+#include "PlatWX.h"
//----------------------------------------------------------------------
#endif
-class wxSTCCallTip : public wxWindow {
+#if wxUSE_POPUPWIN
+#include <wx/popupwin.h>
+#define wxSTCCallTipBase wxPopupWindow
+#define param2 wxBORDER_NONE // popup's 2nd param is flags
+#else
+#define wxSTCCallTipBase wxWindow
+#define param2 -1 // wxWindows 2nd param is ID
+#endif
+
+class wxSTCCallTip : public wxSTCCallTipBase {
public:
- wxSTCCallTip(wxWindow* parent, int ID, CallTip* ct)
- : wxWindow(parent, ID)
+ wxSTCCallTip(wxWindow* parent, CallTip* ct)
+ : wxSTCCallTipBase(parent, param2)
{
m_ct = ct;
}
void OnPaint(wxPaintEvent& evt) {
wxPaintDC dc(this);
- Surface surfaceWindow;
- surfaceWindow.Init(&dc);
- m_ct->PaintCT(&surfaceWindow);
- surfaceWindow.Release();
+ Surface* surfaceWindow = Surface::Allocate();
+ surfaceWindow->Init(&dc);
+ m_ct->PaintCT(surfaceWindow);
+ delete surfaceWindow;
}
+#if wxUSE_POPUPWIN
+ virtual void DoSetSize(int x, int y,
+ int width, int height,
+ int sizeFlags = wxSIZE_AUTO) {
+ if (x != -1)
+ GetParent()->ClientToScreen(&x, NULL);
+ if (y != -1)
+ GetParent()->ClientToScreen(NULL, &y);
+ wxSTCCallTipBase::DoSetSize(x, y, width, height, sizeFlags);
+ }
+#endif
+
+private:
CallTip* m_ct;
DECLARE_EVENT_TABLE()
};
-BEGIN_EVENT_TABLE(wxSTCCallTip, wxWindow)
+BEGIN_EVENT_TABLE(wxSTCCallTip, wxSTCCallTipBase)
EVT_PAINT(wxSTCCallTip::OnPaint)
END_EVENT_TABLE()
+
//----------------------------------------------------------------------
// Constructor/Destructor
if (timer.ticking) {
steTimer = new wxSTCTimer(this);
steTimer->Start(timer.tickSize);
- timer.tickerID = (int)steTimer;
+ timer.tickerID = steTimer;
} else {
steTimer = (wxSTCTimer*)timer.tickerID;
steTimer->Stop();
}
void ScintillaWX::CreateCallTipWindow(PRectangle) {
- ct.wCallTip = new wxSTCCallTip(stc, -1, &ct);
+ ct.wCallTip = new wxSTCCallTip(stc, &ct);
ct.wDraw = ct.wCallTip;
}
void ScintillaWX::AddToPopUp(const char *label, int cmd, bool enabled) {
if (!label[0])
- popup.GetID()->AppendSeparator();
+ ((wxMenu*)popup.GetID())->AppendSeparator();
else
- popup.GetID()->Append(cmd, label);
+ ((wxMenu*)popup.GetID())->Append(cmd, label);
if (!enabled)
- popup.GetID()->Enable(cmd, enabled);
+ ((wxMenu*)popup.GetID())->Enable(cmd, enabled);
}
void ScintillaWX::DoPaint(wxDC* dc, wxRect rect) {
paintState = painting;
- Surface surfaceWindow;
- surfaceWindow.Init(dc);
+ Surface* surfaceWindow = Surface::Allocate();
+ surfaceWindow->Init(dc);
PRectangle rcPaint = PRectangleFromwxRect(rect);
dc->BeginDrawing();
- Paint(&surfaceWindow, rcPaint);
+ Paint(surfaceWindow, rcPaint);
dc->EndDrawing();
- surfaceWindow.Release();
+ delete surfaceWindow;
if (paintState == paintAbandoned) {
// Painting area was insufficient to cover new styling or brace highlight positions
FullPaint();
void ScintillaWX::DoSize(int width, int height) {
- PRectangle rcClient(0,0,width,height);
- SetScrollBarsTo(rcClient);
- DropGraphics();
+// PRectangle rcClient(0,0,width,height);
+// SetScrollBarsTo(rcClient);
+// DropGraphics();
+ ChangeSize();
}
void ScintillaWX::DoLoseFocus(){
rcPaint = GetTextRectangle();
paintingAllText = true;
wxClientDC dc(stc);
- Surface surfaceWindow;
- surfaceWindow.Init(&dc);
- Paint(&surfaceWindow, rcPaint);
- surfaceWindow.Release();
+ Surface* surfaceWindow = Surface::Allocate();
+ surfaceWindow->Init(&dc);
+ Paint(surfaceWindow, rcPaint);
+ delete surfaceWindow;
// stc->Refresh(FALSE);