]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/spinctrl.cpp
fixed (rare but fatal) bug in wxWindowDisabler
[wxWidgets.git] / src / gtk / spinctrl.cpp
index 80f42b1354cd1deedb56687820334290a9e0783e..d5efca072e8da36ac9a2dad5d5231db6b127ee6f 100644 (file)
@@ -88,24 +88,28 @@ bool wxSpinCtrl::Create(wxWindow *parent, wxWindowID id,
 
     m_widget = gtk_spin_button_new( m_adjust, 1, 0 );
     
-    wxSize new_size = size,
-           sizeBest = DoGetBestSize();
-    if (new_size.x == -1)
-        new_size.x = sizeBest.x;
-    if (new_size.y == -1)
-        new_size.y = sizeBest.y;
-
-    if ((new_size.x != size.x) || (new_size.y != size.y))
-        SetSize( new_size.x, new_size.y );
-
     gtk_spin_button_set_wrap( GTK_SPIN_BUTTON(m_widget),
                               (int)(m_windowStyle & wxSP_WRAP) );
 
     GtkEnableEvents();
+    
     m_parent->DoAddChild( this );
 
     PostCreation();
 
+    SetFont( parent->GetFont() );
+    
+    wxSize size_best( DoGetBestSize() );
+    wxSize new_size( size );
+    if (new_size.x == -1)
+        new_size.x = size_best.x;
+    if (new_size.y == -1)
+        new_size.y = size_best.y;
+    if (new_size.y > size_best.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 );
+
     SetBackgroundColour( parent->GetBackgroundColour() );
 
     SetValue( value );
@@ -149,6 +153,8 @@ int wxSpinCtrl::GetValue() const
 {
     wxCHECK_MSG( (m_widget != NULL), 0, wxT("invalid spin button") );
 
+    gtk_spin_button_update( GTK_SPIN_BUTTON(m_widget) );
+
     return (int)ceil(m_adjust->value);
 }