]> git.saurik.com Git - wxWidgets.git/commitdiff
Controls will readjust their size and minsize when SetLabel or SetFont
authorRobin Dunn <robin@alldunn.com>
Sat, 19 Jun 2004 01:35:10 +0000 (01:35 +0000)
committerRobin Dunn <robin@alldunn.com>
Sat, 19 Jun 2004 01:35:10 +0000 (01:35 +0000)
are called.  Fixed up wxStaticText to blend the wxST_NO_AUTOSIZE with
this new functionality.  Made SetBestSize public under the
SetBestFittingSize name.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

43 files changed:
docs/latex/wx/control.tex
docs/latex/wx/window.tex
include/wx/control.h
include/wx/gtk/control.h
include/wx/gtk/stattext.h
include/wx/gtk1/control.h
include/wx/gtk1/stattext.h
include/wx/mac/carbon/stattext.h
include/wx/mac/classic/stattext.h
include/wx/msw/checkbox.h
include/wx/msw/stattext.h
include/wx/msw/tglbtn.h
include/wx/stattext.h
include/wx/window.h
src/common/ctrlcmn.cpp
src/common/wincmn.cpp
src/gtk/bmpbuttn.cpp
src/gtk/button.cpp
src/gtk/checkbox.cpp
src/gtk/control.cpp
src/gtk/radiobox.cpp
src/gtk/radiobut.cpp
src/gtk/statbox.cpp
src/gtk/stattext.cpp
src/gtk/tglbtn.cpp
src/gtk/window.cpp
src/gtk1/bmpbuttn.cpp
src/gtk1/button.cpp
src/gtk1/checkbox.cpp
src/gtk1/control.cpp
src/gtk1/radiobox.cpp
src/gtk1/radiobut.cpp
src/gtk1/statbox.cpp
src/gtk1/stattext.cpp
src/gtk1/tglbtn.cpp
src/gtk1/window.cpp
src/mac/carbon/stattext.cpp
src/mac/classic/stattext.cpp
src/msw/checkbox.cpp
src/msw/stattext.cpp
src/msw/tglbtn.cpp
wxPython/src/_control.i
wxPython/src/_window.i

index 75c4e5f975a89c46d702a879641381f429b89a4b..52ecc060f25fd4a54c151a8375fc7ee30096c79b 100644 (file)
@@ -29,6 +29,14 @@ displays one or more item of data.
 Simulates the effect of the user issuing a command to the item. See \helpref{wxCommandEvent}{wxcommandevent}.
 
 
+\membersection{wxControl::GetAdjustMinSizeFlag}\label{wxcontrolgetadjustminsizeflag}
+
+\func{bool}{GetAdjustMinSizeFlag}{}
+
+Returns whether the minsize should be adjusted for this control when
+SetLabel or SetFont are called.
+
+
 \membersection{wxControl::GetLabel}\label{wxcontrolgetlabel}
 
 \func{wxString\&}{GetLabel}{\void}
@@ -36,6 +44,14 @@ Simulates the effect of the user issuing a command to the item. See \helpref{wxC
 Returns the control's text.
 
 
+\membersection{wxControl::SetAdjustMinSizeFlag}\label{wxcontrolsetadjustminsizeflag}
+
+\func{void}{SetAdjustMinSizeFlag}{\param{bool }{adjust}}
+
+By default controls will readjust their size and minsize when
+SetLabel or SetFont are called.  This flag will allow you to
+control this behavior.
+
 \membersection{wxControl::SetLabel}\label{wxcontrolsetlabel}
 
 \func{void}{SetLabel}{\param{const wxString\& }{label}}
index d3e214b8cc68eeffca53ce8aa96ce368de8caf86..4386be9e9ba4634b931abf0e00c6201f29371b3d 100644 (file)
@@ -2390,6 +2390,20 @@ applications on the system.
 \helpref{wxWindow::Refresh}{wxwindowrefresh},\rtfsp
 \helpref{wxEraseEvent}{wxeraseevent}
 
+\membersection{wxWindow::SetBestFittingSize}\label{wxwindowsetbestfittingsize}
+
+\func{void}{SetBestFittingSize}{\param{const wxSize& }{size = wxDefaultSize}}
+
+A {\it smart} SetSize that will fill in default size components with the
+window's {\it best} size values.  Also set's the minsize for use with
+sizers.
+
+\wxheading{See also}
+
+\helpref{wxWindow::SetSize}{wxwindowsetsize}
+\helpref{wxWindow::GetBestSize}{wxwindowgetbestsize}
+\helpref{wxWindow::SetSizeHints}{wxwindowsetsizehints}
+
 
 \membersection{wxWindow::SetCaret}\label{wxwindowsetcaret}
 
index 6552443ecdedfa08aa515d78e6686feb16555483..5fd882ce0c3210a246fd2da3fd23769f0c602726 100644 (file)
@@ -32,10 +32,11 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxControlNameStr;
 // wxControl is the base class for all controls
 // ----------------------------------------------------------------------------
 
+
 class WXDLLEXPORT wxControlBase : public wxWindow
 {
 public:
-    wxControlBase() { }
+    wxControlBase() { Init(); }
 
     virtual ~wxControlBase();
 
@@ -63,7 +64,16 @@ public:
     // if the button was clicked)
     virtual void Command(wxCommandEvent &event);
 
+        
+    virtual void SetLabel(const wxString& label);
+    virtual bool SetFont(const wxFont& font);
+    virtual bool GetAdjustMinSizeFlag() const { return m_adjustMinSize; }
+    void SetAdjustMinSizeFlag(bool adjust) { m_adjustMinSize = adjust; }
+    
+    
 protected:
+    void Init();
+    
     // creates the control (calls wxWindowBase::CreateBase inside) and adds it
     // to the list of parents children
     bool CreateControl(wxWindowBase *parent,
@@ -88,6 +98,9 @@ protected:
         SetBestSize(size);
     }
 
+    // should minsize and size be adjusted when font or label change?
+    bool        m_adjustMinSize;  
+    
     DECLARE_NO_COPY_CLASS(wxControlBase)
 };
 
index 553f94f7c1d0205c37d74ff37e7debbee6a8786c..c7954c415e2b2c3b2a9adbdd2c20b5ac207f93a7 100644 (file)
@@ -52,7 +52,7 @@ public:
     // char (the one immediately after '&') into m_chAccel (TODO not yet)
     virtual void SetLabel( const wxString &label );
     virtual wxString GetLabel() const;
-
+    
     virtual wxVisualAttributes GetDefaultAttributes() const;
 
 protected:
@@ -63,6 +63,7 @@ protected:
 
     virtual wxSize DoGetBestSize() const;
     void PostCreation(const wxSize& size);
+    void PostSetLabel();
 
 #ifdef __WXGTK20__
     wxString PrepareLabelMnemonics( const wxString &label ) const;
@@ -93,6 +94,7 @@ protected:
 
     wxString   m_label;
     char       m_chAccel;  // enabled to avoid breaking binary compatibility later on
+    bool       m_createComplete;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxControl)
index 6686c96982fd80da969685882386aaf5925a2a6f..dd4d499883b259bd680fd4d353cd84b0093f862b 100644 (file)
@@ -57,7 +57,8 @@ public:
     wxString GetLabel() const;
     void SetLabel( const wxString &label );
 
-    bool SetFont( const wxFont &font );
+    bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); }
+    
     bool SetForegroundColour( const wxColour& colour );
 
     static wxVisualAttributes
index 553f94f7c1d0205c37d74ff37e7debbee6a8786c..c7954c415e2b2c3b2a9adbdd2c20b5ac207f93a7 100644 (file)
@@ -52,7 +52,7 @@ public:
     // char (the one immediately after '&') into m_chAccel (TODO not yet)
     virtual void SetLabel( const wxString &label );
     virtual wxString GetLabel() const;
-
+    
     virtual wxVisualAttributes GetDefaultAttributes() const;
 
 protected:
@@ -63,6 +63,7 @@ protected:
 
     virtual wxSize DoGetBestSize() const;
     void PostCreation(const wxSize& size);
+    void PostSetLabel();
 
 #ifdef __WXGTK20__
     wxString PrepareLabelMnemonics( const wxString &label ) const;
@@ -93,6 +94,7 @@ protected:
 
     wxString   m_label;
     char       m_chAccel;  // enabled to avoid breaking binary compatibility later on
+    bool       m_createComplete;
 
 private:
     DECLARE_DYNAMIC_CLASS(wxControl)
index 6686c96982fd80da969685882386aaf5925a2a6f..dd4d499883b259bd680fd4d353cd84b0093f862b 100644 (file)
@@ -57,7 +57,8 @@ public:
     wxString GetLabel() const;
     void SetLabel( const wxString &label );
 
-    bool SetFont( const wxFont &font );
+    bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); }
+    
     bool SetForegroundColour( const wxColour& colour );
 
     static wxVisualAttributes
index c5f41c02c41b6e220eabcc3cb61f0ec47538b266..95c32a82b9c905f252f475d3923278e1a3140024 100644 (file)
@@ -40,7 +40,6 @@ public:
 
   // accessors
   void SetLabel( const wxString &str ) ;
-  bool SetFont( const wxFont &font );
 
 protected :
 
index 17ecf98ad00e8b032ce4ee43e8dedbee174dcde7..15eae66671ee96c789c7ac66216c56d8e5d59325 100644 (file)
@@ -41,7 +41,6 @@ class WXDLLEXPORT wxStaticText: public wxStaticTextBase
 
   // accessors
   void SetLabel( const wxString &str ) ;
-  bool SetFont( const wxFont &font );
 
   // operations
   virtual void Command(wxCommandEvent& WXUNUSED(event)) {};
index 64dedbf487c036c514f4cc029b0e6a699edf187e..da3df7f80a47b39ff948a16d9b8f187cb63f9b86 100644 (file)
@@ -45,8 +45,6 @@ public:
     virtual void SetValue(bool value);
     virtual bool GetValue() const;
 
-    virtual void SetLabel(const wxString& label);
-
     virtual bool MSWCommand(WXUINT param, WXWORD id);
     virtual void Command(wxCommandEvent& event);
 
index 0ceef4c977a417ba06fc1e6a90e8e7ddb1b1b7b6..c42f65552c131fc9d6205516cb596bdd9d50952a 100644 (file)
@@ -40,10 +40,6 @@ public:
                 long style = 0,
                 const wxString& name = wxStaticTextNameStr);
 
-    // override some methods to resize the window properly
-    virtual void SetLabel(const wxString& label);
-    virtual bool SetFont( const wxFont &font );
-
 protected:
     // implement/override some base class virtuals
     virtual wxBorder GetDefaultBorder() const;
index 11367023977f96f3bd118c6f4eef39e5408fa66f..b6ab08a2b8db9fee1bddf84db1ec3d1b160be252 100644 (file)
@@ -45,7 +45,6 @@ public:
     virtual bool GetValue() const ;
 
     virtual bool MSWCommand(WXUINT param, WXWORD id);
-    virtual void SetLabel(const wxString& label);
     virtual void Command(wxCommandEvent& event);
 
 protected:
index 8590052f74938221b45eccb6218c4ffaed5ff1ef..c210383e5c63001abfa0c5f90b57442c78138ed3 100644 (file)
@@ -17,6 +17,8 @@ public:
     virtual void ApplyParentThemeBackground(const wxColour& bg)
         { SetBackgroundColour(bg); }
 
+    bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); }
+    
 private:
     DECLARE_NO_COPY_CLASS(wxStaticTextBase)
 };
index 87dc4cc69168862d6514fea2cfbcd6869ba9c412..40ad7b237cd17743d02949ed080d85146cd4b5c5 100644 (file)
@@ -230,6 +230,9 @@ public:
     void Move(const wxPoint& pt, int flags = wxSIZE_USE_EXISTING)
         { Move(pt.x, pt.y, flags); }
 
+    // A 'Smart' SetSize that will fill in default size values with 'best' size
+    void SetBestFittingSize(const wxSize& size=wxDefaultSize);
+
         // Z-order
     virtual void Raise() = 0;
     virtual void Lower() = 0;
@@ -1136,15 +1139,10 @@ protected:
     static int WidthDefault(int w) { return w == -1 ? 20 : w; }
     static int HeightDefault(int h) { return h == -1 ? 20 : h; }
 
-    // set the best size for the control if the default size was given:
-    // replaces the fields of size == -1 with the best values for them and
-    // calls SetSize() if needed
-    //
-    // This function is rather unfortunately named..  it's really just a
-    // smarter SetSize / convenience function for expanding wxDefaultSize.
-    // Note that it does not influence the value returned by GetBestSize
-    // at all.
-    void SetBestSize(const wxSize& size);
+    // keep the old name for compatibility, at least until all the internal
+    // usages of it are changed to SetBestFittingSize
+    void SetBestSize(const wxSize& size) { SetBestFittingSize(size); }
+        
 
     // set the initial window size if none is given (i.e. at least one of the
     // components of the size passed to ctor/Create() is -1)
index 242efdca1f1c05ec55bcd4904cf0cc9bfe1bb29e..eab0f889f12ae35443944932851c14336ae00c77 100644 (file)
@@ -68,6 +68,13 @@ bool wxControlBase::Create(wxWindow *parent,
     return ret;
 }
 
+
+void wxControlBase::Init()
+{
+    m_adjustMinSize = true;
+}
+
+
 bool wxControlBase::CreateControl(wxWindowBase *parent,
                                   wxWindowID id,
                                   const wxPoint& pos,
@@ -116,6 +123,24 @@ void wxControlBase::InitCommandEvent(wxCommandEvent& event) const
     }
 }
 
+void wxControlBase::SetLabel(const wxString& label)
+{
+    wxWindow::SetLabel(label);
+    if (GetAdjustMinSizeFlag())
+        SetBestSize(wxDefaultSize);
+}
+
+
+bool wxControlBase::SetFont(const wxFont& font)
+{
+    bool ret = wxWindow::SetFont(font);
+
+    if (GetAdjustMinSizeFlag())
+        SetBestSize(wxDefaultSize);
+
+    return ret;
+}
+
 // ----------------------------------------------------------------------------
 // wxStaticBitmap
 // ----------------------------------------------------------------------------
index e7d8c7768aa46f80c1ae5fdb79e0212cd35780b6..e6dd55946e65ed236165c7534a38d8d97ec555ff 100644 (file)
@@ -620,7 +620,7 @@ wxSize wxWindowBase::DoGetBestSize() const
     }
 }
 
-void wxWindowBase::SetBestSize(const wxSize& size)
+void wxWindowBase::SetBestFittingSize(const wxSize& size)
 {
     // If the given size is incomplete then merge with the best size.
     wxSize sizeBest;
index db117650134db117c4d6c76b80e2058b8df09813..8be33e83f7de06ef90ce59e4eab8892a1759f024 100644 (file)
@@ -184,6 +184,7 @@ void wxBitmapButton::SetLabel( const wxString &label )
     wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
 
     wxControl::SetLabel( label );
+    PostSetLabel();
 }
 
 wxString wxBitmapButton::GetLabel() const
index d64273b78006e960f02070aa9024b0b13a1ada40..330b5d0e1278fc024172679f2760fde5f311325b 100644 (file)
@@ -175,6 +175,8 @@ void wxButton::SetLabel( const wxString &label )
 #else
     gtk_label_set( GTK_LABEL( BUTTON_CHILD(m_widget) ), wxGTK_CONV( GetLabel() ) );
 #endif
+
+    PostSetLabel();
 }
 
 bool wxButton::Enable( bool enable )
index 1c64e26ba1c5156da9fd5d2b8fc51b0a8459f0e3..33f8a565b79d5cebb1fbaf3aa15dde039be7f09f 100644 (file)
@@ -158,6 +158,8 @@ void wxCheckBox::SetLabel( const wxString& label )
 #else
     gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) );
 #endif
+
+    PostSetLabel();
 }
 
 bool wxCheckBox::Enable( bool enable )
index 053f18f1ead1921260ac31c15907c58a72e78cb4..ed8b2147e84540abf8e75c377a131aeae5eecb02 100644 (file)
@@ -33,6 +33,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxControl, wxWindow)
 wxControl::wxControl()
 {
     m_needParent = TRUE;
+    m_createComplete = false;
 }
 
 bool wxControl::Create( wxWindow *parent,
@@ -43,6 +44,7 @@ bool wxControl::Create( wxWindow *parent,
                       const wxValidator& validator,
                       const wxString &name )
 {
+    m_createComplete = false;
     bool ret = wxWindow::Create(parent, id, pos, size, style, name);
     
 #if wxUSE_VALIDATORS
@@ -68,6 +70,14 @@ void wxControl::SetLabel( const wxString &label )
     }
 }
 
+void wxControl::PostSetLabel()
+{
+    // make sure the widget has been created, and that PostCreate has already
+    // been called
+    if (m_widget && m_createComplete && GetAdjustMinSizeFlag())
+        SetBestSize(wxDefaultSize);
+}
+
 wxString wxControl::GetLabel() const
 {
     return m_label;
@@ -103,6 +113,7 @@ void wxControl::PostCreation(const wxSize& size)
     InheritAttributes();
     ApplyWidgetStyle();
     SetInitialBestSize(size);
+    m_createComplete = true;
 }
 
 
index ea1eee523009f2267e4b1d760e14cecc3b71a6bd..f0af2b64a5dddcd6add84faa4dcad4e297bfaf1e 100644 (file)
@@ -540,6 +540,8 @@ void wxRadioBox::SetLabel( const wxString& label )
     wxControl::SetLabel( label );
 
     gtk_frame_set_label( GTK_FRAME(m_widget), wxGTK_CONV( wxControl::GetLabel() ) );
+
+    PostSetLabel();
 }
 
 void wxRadioBox::SetString( int item, const wxString& label )
index 2c3e1c0d107c9d0f53c74df9c2e45fa47f2b63ca..837cd33058432b82c0a58d73e4c65e4ff2907e76 100644 (file)
@@ -145,6 +145,8 @@ void wxRadioButton::SetLabel( const wxString& label )
 #else
     gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) );
 #endif
+
+    PostSetLabel();
 }
 
 void wxRadioButton::SetValue( bool val )
index 7c3eb9678ee91cdea241dfb38a7121f90fe2cd64..9d489265d8f5fb291d620add559eb12d6473af5d 100644 (file)
@@ -89,6 +89,7 @@ void wxStaticBox::SetLabel( const wxString &label )
 
     gtk_frame_set_label( GTK_FRAME( m_widget ),
                          m_label.empty() ? (char *)NULL : (const char*) wxGTK_CONV( m_label ) );
+    PostSetLabel();
 }
 
 // static
index d659e8cc167cbb7ab1acc629beabdbe2226d5a48..f3c40c1226586bec271e23f85e1f4b3af3d1269c 100644 (file)
@@ -146,27 +146,10 @@ void wxStaticText::SetLabel( const wxString &label )
 #else
     gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
 #endif
-
-    // adjust the label size to the new label unless disabled
-    if (!HasFlag(wxST_NO_AUTORESIZE))
-    {
-        SetSize( GetBestSize() );
-        SetSizeHints(GetSize());
-    }
+    
+    PostSetLabel();
 }
 
-bool wxStaticText::SetFont( const wxFont &font )
-{
-    bool ret = wxControl::SetFont(font);
-
-    // adjust the label size to the new label unless disabled
-    if (!HasFlag(wxST_NO_AUTORESIZE))
-    {
-        SetSize( GetBestSize() );
-        SetSizeHints(GetSize());
-    }
-    return ret;
-}
 
 wxSize wxStaticText::DoGetBestSize() const
 {
index 8ac7ec5a3c6364728ce0f8ed57194b0976e3f193..7bccf53080fb67ad46a0bf5b2313c654c80ee2f8 100644 (file)
@@ -287,6 +287,8 @@ void wxToggleButton::SetLabel(const wxString& label)
     wxControl::SetLabel(label);
 
     gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV( GetLabel() ) );
+
+    PostSetLabel();
 }
 
 bool wxToggleButton::Enable(bool enable /*=TRUE*/)
index 045dbfc9fa6c868f7664e7a8beed83242fa52bd3..8e5f4bdd3b1400386a08e040eb32fc9cd1206748 100644 (file)
@@ -4043,7 +4043,7 @@ GtkRcStyle *wxWindowGTK::CreateWidgetStyle(bool forceStyle)
 #endif
     }
 
-    if ( m_hasFgCol )
+    if ( m_foregroundColour.Ok() )
     {
         GdkColor *fg = m_foregroundColour.GetColor();
         
@@ -4057,7 +4057,7 @@ GtkRcStyle *wxWindowGTK::CreateWidgetStyle(bool forceStyle)
         style->color_flags[GTK_STATE_ACTIVE] = GTK_RC_FG;
     }
 
-    if ( m_hasBgCol )
+    if ( m_backgroundColour.Ok() )
     {
         GdkColor *bg = m_backgroundColour.GetColor();
 
index db117650134db117c4d6c76b80e2058b8df09813..8be33e83f7de06ef90ce59e4eab8892a1759f024 100644 (file)
@@ -184,6 +184,7 @@ void wxBitmapButton::SetLabel( const wxString &label )
     wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
 
     wxControl::SetLabel( label );
+    PostSetLabel();
 }
 
 wxString wxBitmapButton::GetLabel() const
index d64273b78006e960f02070aa9024b0b13a1ada40..330b5d0e1278fc024172679f2760fde5f311325b 100644 (file)
@@ -175,6 +175,8 @@ void wxButton::SetLabel( const wxString &label )
 #else
     gtk_label_set( GTK_LABEL( BUTTON_CHILD(m_widget) ), wxGTK_CONV( GetLabel() ) );
 #endif
+
+    PostSetLabel();
 }
 
 bool wxButton::Enable( bool enable )
index 1c64e26ba1c5156da9fd5d2b8fc51b0a8459f0e3..33f8a565b79d5cebb1fbaf3aa15dde039be7f09f 100644 (file)
@@ -158,6 +158,8 @@ void wxCheckBox::SetLabel( const wxString& label )
 #else
     gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) );
 #endif
+
+    PostSetLabel();
 }
 
 bool wxCheckBox::Enable( bool enable )
index 053f18f1ead1921260ac31c15907c58a72e78cb4..ed8b2147e84540abf8e75c377a131aeae5eecb02 100644 (file)
@@ -33,6 +33,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxControl, wxWindow)
 wxControl::wxControl()
 {
     m_needParent = TRUE;
+    m_createComplete = false;
 }
 
 bool wxControl::Create( wxWindow *parent,
@@ -43,6 +44,7 @@ bool wxControl::Create( wxWindow *parent,
                       const wxValidator& validator,
                       const wxString &name )
 {
+    m_createComplete = false;
     bool ret = wxWindow::Create(parent, id, pos, size, style, name);
     
 #if wxUSE_VALIDATORS
@@ -68,6 +70,14 @@ void wxControl::SetLabel( const wxString &label )
     }
 }
 
+void wxControl::PostSetLabel()
+{
+    // make sure the widget has been created, and that PostCreate has already
+    // been called
+    if (m_widget && m_createComplete && GetAdjustMinSizeFlag())
+        SetBestSize(wxDefaultSize);
+}
+
 wxString wxControl::GetLabel() const
 {
     return m_label;
@@ -103,6 +113,7 @@ void wxControl::PostCreation(const wxSize& size)
     InheritAttributes();
     ApplyWidgetStyle();
     SetInitialBestSize(size);
+    m_createComplete = true;
 }
 
 
index ea1eee523009f2267e4b1d760e14cecc3b71a6bd..f0af2b64a5dddcd6add84faa4dcad4e297bfaf1e 100644 (file)
@@ -540,6 +540,8 @@ void wxRadioBox::SetLabel( const wxString& label )
     wxControl::SetLabel( label );
 
     gtk_frame_set_label( GTK_FRAME(m_widget), wxGTK_CONV( wxControl::GetLabel() ) );
+
+    PostSetLabel();
 }
 
 void wxRadioBox::SetString( int item, const wxString& label )
index 2c3e1c0d107c9d0f53c74df9c2e45fa47f2b63ca..837cd33058432b82c0a58d73e4c65e4ff2907e76 100644 (file)
@@ -145,6 +145,8 @@ void wxRadioButton::SetLabel( const wxString& label )
 #else
     gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) );
 #endif
+
+    PostSetLabel();
 }
 
 void wxRadioButton::SetValue( bool val )
index 7c3eb9678ee91cdea241dfb38a7121f90fe2cd64..9d489265d8f5fb291d620add559eb12d6473af5d 100644 (file)
@@ -89,6 +89,7 @@ void wxStaticBox::SetLabel( const wxString &label )
 
     gtk_frame_set_label( GTK_FRAME( m_widget ),
                          m_label.empty() ? (char *)NULL : (const char*) wxGTK_CONV( m_label ) );
+    PostSetLabel();
 }
 
 // static
index d659e8cc167cbb7ab1acc629beabdbe2226d5a48..f3c40c1226586bec271e23f85e1f4b3af3d1269c 100644 (file)
@@ -146,27 +146,10 @@ void wxStaticText::SetLabel( const wxString &label )
 #else
     gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
 #endif
-
-    // adjust the label size to the new label unless disabled
-    if (!HasFlag(wxST_NO_AUTORESIZE))
-    {
-        SetSize( GetBestSize() );
-        SetSizeHints(GetSize());
-    }
+    
+    PostSetLabel();
 }
 
-bool wxStaticText::SetFont( const wxFont &font )
-{
-    bool ret = wxControl::SetFont(font);
-
-    // adjust the label size to the new label unless disabled
-    if (!HasFlag(wxST_NO_AUTORESIZE))
-    {
-        SetSize( GetBestSize() );
-        SetSizeHints(GetSize());
-    }
-    return ret;
-}
 
 wxSize wxStaticText::DoGetBestSize() const
 {
index 8ac7ec5a3c6364728ce0f8ed57194b0976e3f193..7bccf53080fb67ad46a0bf5b2313c654c80ee2f8 100644 (file)
@@ -287,6 +287,8 @@ void wxToggleButton::SetLabel(const wxString& label)
     wxControl::SetLabel(label);
 
     gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV( GetLabel() ) );
+
+    PostSetLabel();
 }
 
 bool wxToggleButton::Enable(bool enable /*=TRUE*/)
index 045dbfc9fa6c868f7664e7a8beed83242fa52bd3..8e5f4bdd3b1400386a08e040eb32fc9cd1206748 100644 (file)
@@ -4043,7 +4043,7 @@ GtkRcStyle *wxWindowGTK::CreateWidgetStyle(bool forceStyle)
 #endif
     }
 
-    if ( m_hasFgCol )
+    if ( m_foregroundColour.Ok() )
     {
         GdkColor *fg = m_foregroundColour.GetColor();
         
@@ -4057,7 +4057,7 @@ GtkRcStyle *wxWindowGTK::CreateWidgetStyle(bool forceStyle)
         style->color_flags[GTK_STATE_ACTIVE] = GTK_RC_FG;
     }
 
-    if ( m_hasBgCol )
+    if ( m_backgroundColour.Ok() )
     {
         GdkColor *bg = m_backgroundColour.GetColor();
 
index f4757d19d7c223c2b853c4ac0779efdf3f3f55f1..761b0598b5194dba245ec6a8de86eb5403b3fa22 100644 (file)
@@ -92,27 +92,9 @@ void wxStaticText::SetLabel(const wxString& st )
     SetControlData( *m_peer, kControlEntireControl , kControlStaticTextCFStringTag, sizeof( CFStringRef ),
                &ref );
 
-    if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
-    {
-        SetSize( GetBestSize() ) ;
-        SetSizeHints(GetSize());
-    }
+    if (GetAdjustMinSizeFlag())
+        SetBestSize(wxDefaultSize);
 
     Update() ;
 }
 
-bool wxStaticText::SetFont(const wxFont& font)
-{
-    bool ret = wxControl::SetFont(font);
-
-       if ( ret )
-       {
-           if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
-            {
-               SetSize( GetBestSize() );
-                SetSizeHints(GetSize());
-            }
-       }
-
-    return ret;
-}
index 1c0facdbf70d86610846d12989813d7cef848fd9..8bc3ee927248f7bc9342fa53584e0008552b97ba 100644 (file)
@@ -232,31 +232,11 @@ void wxStaticText::SetLabel(const wxString& st )
 {
     SetTitle( st ) ;
     m_label = st ;
-    if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
-    {
-        // temporary fix until layout measurement and drawing are in synch again
-        Refresh() ;
-        SetSize( GetBestSize() ) ;
-    }
+
+    if (GetAdjustMinSizeFlag())
+        SetBestSize(wxDefaultSize);
+
     Refresh() ;
     Update() ;
 }
 
-bool wxStaticText::SetFont(const wxFont& font)
-{
-    bool ret = wxControl::SetFont(font);
-
-       if ( ret )
-       {
-           // adjust the size of the window to fit to the label unless autoresizing is
-           // disabled
-           if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
-           {
-               // temporary fix until layout measurement and drawing are in synch again
-            Refresh() ;
-               SetSize( GetBestSize() );
-           }
-       }
-
-    return ret;
-}
index f596c6a408782e5e0ec97dbba3bd0df5cd5166dc..fe6b02506759716349e1db9261553c67ae08c303 100644 (file)
@@ -165,10 +165,6 @@ bool wxCheckBox::Create(wxWindow *parent,
     return MSWCreateControl(wxT("BUTTON"), msStyle, pos, size, label, 0);
 }
 
-void wxCheckBox::SetLabel(const wxString& label)
-{
-    SetWindowText(GetHwnd(), label);
-}
 
 wxSize wxCheckBox::DoGetBestSize() const
 {
index 12b740301880e7a625246ba2184a47363b9bfa0a..02d4e44b50d9504304ac40b654273d0835ef8b02 100644 (file)
@@ -207,33 +207,5 @@ void wxStaticText::DoSetSize(int x, int y, int w, int h, int sizeFlags)
     Refresh();
 }
 
-void wxStaticText::SetLabel(const wxString& label)
-{
-    wxStaticTextBase::SetLabel(label);
-
-    // adjust the size of the window to fit to the label unless autoresizing is
-    // disabled
-    if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
-    {
-        DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
-        SetSizeHints(GetSize());
-    }
-}
-
-
-bool wxStaticText::SetFont(const wxFont& font)
-{
-    bool ret = wxControl::SetFont(font);
-
-    // adjust the size of the window to fit to the label unless autoresizing is
-    // disabled
-    if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
-    {
-        DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
-        SetSizeHints(GetSize());
-    }
-
-    return ret;
-}
 
 #endif // wxUSE_STATTEXT
index 9b6d07128d7e3f7118f16705d05de37f4c2f38f3..02f1fc0f425d364493813da59dcb6d809696516d 100644 (file)
@@ -110,11 +110,6 @@ WXDWORD wxToggleButton::MSWGetStyle(long style, WXDWORD *exstyle) const
     return msStyle;
 }
 
-void wxToggleButton::SetLabel(const wxString& label)
-{
-    SetWindowText(GetHwnd(), label);
-}
-
 wxSize wxToggleButton::DoGetBestSize() const
 {
    wxString label = wxGetWindowText(GetHWND());
index 966b3950a677338d6c51921b31d99ca8a8c54f72..8860f56552d91b99a9cecd4cdff2a6bf777d7666 100644 (file)
@@ -77,6 +77,20 @@ __init__ as a plain old wx.Control is not very useful.", "");
         void , SetLabel(const wxString& label),
         "Sets the item's text.", "");
 
+
+    DocDeclStr(
+        bool , GetAdjustMinSizeFlag(),
+        "Returns whether the minsize should be adjusted for this control when
+`SetLabel` or `SetFont` are called.", "");
+    
+    DocDeclStr(
+        void , SetAdjustMinSizeFlag(bool adjust),
+        "By default controls will readjust their size and minsize when
+`SetLabel` or `SetFont` are called.  This flag will allow you to
+control this behavior.", "
+
+:see: `GetAdjustMinSizeFlag`
+");
     
     static wxVisualAttributes
     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
index 3c8958510126f3f2945bdbe5f824011d2e1059c7..cb217eea1a0f96a6d3d892280f7942eb8361bb23 100644 (file)
@@ -415,8 +415,13 @@ default values.", "",
         "Moves the window to the given position.", "",
         MoveXY);
     
+    DocDeclStr(
+        void , SetBestFittingSize(const wxSize& size=wxDefaultSize),
+        "A 'Smart' SetSize that will fill in default size components with the
+window's *best size* values.  Also set's the minsize for use with sizers.", "");
+    
 
-
+    
     DocDeclStr(
         virtual void , Raise(),
         "Raises the window to the top of the window hierarchy if it is a
@@ -1267,16 +1272,17 @@ this.", "");
         "Sets the background colour of the window.  Returns True if the colour
 was changed.  The background colour is usually painted by the default
 EVT_ERASE_BACKGROUND event handler function under Windows and
-automatically under GTK.
+automatically under GTK.  Using `wx.NullColour` will reset the window
+to the default background colour.
 
 Note that setting the background colour may not cause an immediate
-refresh, so you may wish to call ClearBackground or Refresh after
+refresh, so you may wish to call `ClearBackground` or `Refresh` after
 calling this function.
 
-Use this function with care under GTK+ as the new appearance of the
-window might not look equally well when used with themes, i.e GTK+'s
-ability to change its look as the user wishes with run-time loadable
-modules.", "");
+Using this function will disable attempts to use themes for this
+window, if the system supports them.  Use with care since usually the
+themes represent the appearance chosen by the user to be used for all
+applications on the system.", "");
 
     DocDeclStr(
         void , SetDefaultBackgroundColour(const wxColour& colour),