]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/textctrl.cpp
fixed (rare but fatal) bug in wxWindowDisabler
[wxWidgets.git] / src / gtk / textctrl.cpp
index e832dcdf05704efc246545ba426a6e515d07878c..0f8df9de994744b2fb27480606b62d1c6697d46f 100644 (file)
@@ -192,20 +192,21 @@ bool wxTextCtrl::Create( wxWindow *parent,
           m_text = gtk_entry_new();
     }
 
-    wxSize new_size = size,
-           sizeBest = DoGetBestSize();
+    m_parent->DoAddChild( this );
+
+    PostCreation();
+
+    SetFont( parent->GetFont() );
+
+    wxSize size_best( DoGetBestSize() );
+    wxSize new_size( size );
     if (new_size.x == -1)
-        new_size.x = sizeBest.x;
+        new_size.x = size_best.x;
     if (new_size.y == -1)
-        new_size.y = sizeBest.y;
-
+        new_size.y = size_best.y;
     if ((new_size.x != size.x) || (new_size.y != size.y))
         SetSize( new_size.x, new_size.y );
 
-    m_parent->DoAddChild( this );
-
-    PostCreation();
-
     if (multi_line)
         gtk_widget_show(m_text);
 
@@ -606,6 +607,26 @@ void wxTextCtrl::SetEditable( bool editable )
         gtk_entry_set_editable( GTK_ENTRY(m_text), editable );
 }
 
+bool wxTextCtrl::Enable( bool enable )
+{
+    if (!wxWindowBase::Enable(enable))
+    {
+        // nothing to do
+        return FALSE;
+    }
+    
+    if (m_windowStyle & wxTE_MULTILINE)
+    {
+        gtk_text_set_editable( GTK_TEXT(m_text), enable );
+    }
+    else
+    {
+        gtk_widget_set_sensitive( m_text, enable );
+    }
+
+    return TRUE;
+}
+
 void wxTextCtrl::DiscardEdits()
 {
     m_modified = FALSE;