DEFINE_EVENT_TYPE(wxEVT_COMMAND_RICHTEXT_CONTENT_DELETED)
DEFINE_EVENT_TYPE(wxEVT_COMMAND_RICHTEXT_STYLE_CHANGED)
DEFINE_EVENT_TYPE(wxEVT_COMMAND_RICHTEXT_SELECTION_CHANGED)
+DEFINE_EVENT_TYPE(wxEVT_COMMAND_RICHTEXT_BUFFER_RESET)
IMPLEMENT_CLASS( wxRichTextCtrl, wxControl )
SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
}
- GetBuffer().Reset();
- GetBuffer().SetRichTextCtrl(this);
-
- SetCaret(new wxCaret(this, wxRICHTEXT_DEFAULT_CARET_WIDTH, 16));
- GetCaret()->Show();
-
if (style & wxTE_READONLY)
SetEditable(false);
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
SetBackgroundStyle(wxBG_STYLE_CUSTOM);
+ GetBuffer().Reset();
+ GetBuffer().SetRichTextCtrl(this);
+
+ SetCaret(new wxCaret(this, wxRICHTEXT_DEFAULT_CARET_WIDTH, 16));
+ GetCaret()->Show();
+
// Tell the sizers to use the given or best size
SetInitialSize(size);
/// Member initialisation
void wxRichTextCtrl::Init()
{
- m_freezeCount = 0;
m_contextMenu = NULL;
m_caret = NULL;
m_caretPosition = -1;
m_caretPositionForDefaultStyle = -2;
}
-/// Call Freeze to prevent refresh
-void wxRichTextCtrl::Freeze()
-{
- m_freezeCount ++;
-}
-
-/// Call Thaw to refresh
-void wxRichTextCtrl::Thaw()
+void wxRichTextCtrl::DoThaw()
{
- m_freezeCount --;
-
- if (m_freezeCount == 0)
- {
- if (GetBuffer().GetDirty())
- LayoutContent();
- else
- SetupScrollbars();
- Refresh(false);
- }
+ if (GetBuffer().GetDirty())
+ LayoutContent();
+ else
+ SetupScrollbars();
+ Refresh(false);
}
/// Clear all text
m_caretAtLineStart = false;
m_selectionRange.SetRange(-2, -2);
- if (m_freezeCount == 0)
+ Scroll(0,0);
+
+ if (!IsFrozen())
{
LayoutContent();
Refresh(false);
#else
wxPaintDC dc(this);
#endif
- PrepareDC(dc);
- if (m_freezeCount > 0)
+ if (IsFrozen())
return;
+ PrepareDC(dc);
+
dc.SetFont(GetFont());
// Paint the background
/// Set up scrollbars, e.g. after a resize
void wxRichTextCtrl::SetupScrollbars(bool atTop)
{
- if (m_freezeCount)
+ if (IsFrozen())
return;
if (GetBuffer().IsEmpty())
SelectNone();
m_caretPosition = pos - 1;
+
+ PositionCaret();
}
void wxRichTextCtrl::SetInsertionPointEnd()