diff --git a/include/wx/x11/textctrl.h b/include/wx/x11/textctrl.h index 3b4b48ac40..1b8f0143a2 100644 --- a/include/wx/x11/textctrl.h +++ b/include/wx/x11/textctrl.h @@ -24,7 +24,7 @@ #endif #include "wx/scrolwin.h" -#include "wx/dynarray.h" +#include "wx/arrstr.h" #include "wx/datetime.h" //----------------------------------------------------------------------------- @@ -101,6 +101,7 @@ public: long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString &name = wxTextCtrlNameStr); + virtual ~wxTextCtrl(); bool Create(wxWindow *parent, wxWindowID id, diff --git a/src/x11/textctrl.cpp b/src/x11/textctrl.cpp index 84b9ae0290..6f74efadb2 100644 --- a/src/x11/textctrl.cpp +++ b/src/x11/textctrl.cpp @@ -157,8 +157,6 @@ void wxTextCtrl::Init() m_editable = TRUE; m_modified = FALSE; - m_undos.DeleteContents( TRUE ); - m_lang = wxSOURCE_LANG_NONE; m_capturing = FALSE; @@ -202,6 +200,11 @@ wxTextCtrl::wxTextCtrl( wxWindow *parent, Create( parent, id, value, pos, size, style, validator, name ); } +wxTextCtrl::~wxTextCtrl() +{ + WX_CLEAR_LIST(wxList, m_undos); +} + bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, @@ -398,7 +401,7 @@ void wxTextCtrl::Clear() SetScrollbars( m_charWidth, m_lineHeight, 0, 0, 0, 0 ); Refresh(); - m_undos.Clear(); + WX_CLEAR_LIST(wxList, m_undos); } void wxTextCtrl::Replace(long from, long to, const wxString& value) @@ -795,12 +798,13 @@ void wxTextCtrl::Undo() { if (m_undos.GetCount() == 0) return; - wxList::Node *node = m_undos.Item( m_undos.GetCount()-1 ); + wxList::compatibility_iterator node = m_undos.Item( m_undos.GetCount()-1 ); wxSourceUndoStep *undo = (wxSourceUndoStep*) node->GetData(); undo->Undo(); - - delete node; + + delete undo; + m_undos.Erase( node ); m_modified = TRUE; }