X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6be306d4dc596ee59bc4ea13288120297cb9562e..ca282726be518ce2f214b890dbaafce736f14e36:/src/gtk/textctrl.cpp diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index ae00662c74..dda27477f3 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -546,8 +546,6 @@ gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win ) if ( win->IgnoreTextUpdate() ) return; - if (!win->m_hasVMT) return; - if ( win->MarkDirtyOnChange() ) win->MarkDirty(); @@ -607,12 +605,18 @@ void wxTextCtrl::Init() SetUpdateFont(false); m_text = NULL; + m_buffer = NULL; m_showPositionOnThaw = NULL; m_anonymousMarkList = NULL; } wxTextCtrl::~wxTextCtrl() { + if (m_text) + GTKDisconnect(m_text); + if (m_buffer) + GTKDisconnect(m_buffer); + // this is also done by wxWindowGTK dtor, but has to be done here so our // DoThaw() override is called while (IsFrozen()) @@ -1831,12 +1835,10 @@ void wxTextCtrl::DoFreeze() { wxCHECK_RET(m_text != NULL, wxT("invalid text ctrl")); - wxWindow::DoFreeze(); + GTKFreezeWidget(m_text); if ( HasFlag(wxTE_MULTILINE) ) { - GTKFreezeWidget(m_text); - // removing buffer dramatically speeds up insertion: g_object_ref(m_buffer); GtkTextBuffer* buf_new = gtk_text_buffer_new(NULL); @@ -1877,12 +1879,9 @@ void wxTextCtrl::DoThaw() GTK_TEXT_VIEW(m_text), m_showPositionOnThaw); m_showPositionOnThaw = NULL; } - - // and thaw the window - GTKThawWidget(m_text); } - wxWindow::DoThaw(); + GTKThawWidget(m_text); } // ----------------------------------------------------------------------------