]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/textctrl.cpp
Fix crash in wxDC::GetMultiLineTextExtent() after last commit.
[wxWidgets.git] / src / gtk / textctrl.cpp
index ae00662c747d5f2a022123aa8ef8a5580b1ae741..dda27477f3c888562d019f505299460a27a8aaa8 100644 (file)
@@ -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);
 }
 
 // ----------------------------------------------------------------------------