reverted m_adjustMinSize change prepatory for a new approach to fix

the problem


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27930 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-06-21 22:58:13 +00:00
parent 478ba84485
commit c0e6c05138
33 changed files with 119 additions and 125 deletions

View File

@@ -29,14 +29,6 @@ displays one or more item of data.
Simulates the effect of the user issuing a command to the item. See \helpref{wxCommandEvent}{wxcommandevent}. 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} \membersection{wxControl::GetLabel}\label{wxcontrolgetlabel}
\func{wxString\&}{GetLabel}{\void} \func{wxString\&}{GetLabel}{\void}
@@ -44,14 +36,6 @@ SetLabel or SetFont are called.
Returns the control's text. 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} \membersection{wxControl::SetLabel}\label{wxcontrolsetlabel}
\func{void}{SetLabel}{\param{const wxString\& }{label}} \func{void}{SetLabel}{\param{const wxString\& }{label}}

View File

@@ -32,11 +32,10 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxControlNameStr;
// wxControl is the base class for all controls // wxControl is the base class for all controls
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class WXDLLEXPORT wxControlBase : public wxWindow class WXDLLEXPORT wxControlBase : public wxWindow
{ {
public: public:
wxControlBase() { Init(); } wxControlBase() { }
virtual ~wxControlBase(); virtual ~wxControlBase();
@@ -64,16 +63,7 @@ public:
// if the button was clicked) // if the button was clicked)
virtual void Command(wxCommandEvent &event); 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: protected:
void Init();
// creates the control (calls wxWindowBase::CreateBase inside) and adds it // creates the control (calls wxWindowBase::CreateBase inside) and adds it
// to the list of parents children // to the list of parents children
bool CreateControl(wxWindowBase *parent, bool CreateControl(wxWindowBase *parent,
@@ -98,9 +88,6 @@ protected:
SetBestSize(size); SetBestSize(size);
} }
// should minsize and size be adjusted when font or label change?
bool m_adjustMinSize;
DECLARE_NO_COPY_CLASS(wxControlBase) DECLARE_NO_COPY_CLASS(wxControlBase)
}; };

View File

@@ -58,7 +58,6 @@ public:
protected: protected:
virtual wxSize DoGetBestSize() const; virtual wxSize DoGetBestSize() const;
void PostCreation(const wxSize& size); void PostCreation(const wxSize& size);
void PostSetLabel();
#ifdef __WXGTK20__ #ifdef __WXGTK20__
wxString PrepareLabelMnemonics( const wxString &label ) const; wxString PrepareLabelMnemonics( const wxString &label ) const;
@@ -89,7 +88,6 @@ protected:
wxString m_label; wxString m_label;
char m_chAccel; // enabled to avoid breaking binary compatibility later on char m_chAccel; // enabled to avoid breaking binary compatibility later on
bool m_createComplete;
private: private:
DECLARE_DYNAMIC_CLASS(wxControl) DECLARE_DYNAMIC_CLASS(wxControl)

View File

@@ -57,8 +57,7 @@ public:
wxString GetLabel() const; wxString GetLabel() const;
void SetLabel( const wxString &label ); void SetLabel( const wxString &label );
bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); } bool SetFont( const wxFont &font );
bool SetForegroundColour( const wxColour& colour ); bool SetForegroundColour( const wxColour& colour );
static wxVisualAttributes static wxVisualAttributes

View File

@@ -58,7 +58,6 @@ public:
protected: protected:
virtual wxSize DoGetBestSize() const; virtual wxSize DoGetBestSize() const;
void PostCreation(const wxSize& size); void PostCreation(const wxSize& size);
void PostSetLabel();
#ifdef __WXGTK20__ #ifdef __WXGTK20__
wxString PrepareLabelMnemonics( const wxString &label ) const; wxString PrepareLabelMnemonics( const wxString &label ) const;
@@ -89,7 +88,6 @@ protected:
wxString m_label; wxString m_label;
char m_chAccel; // enabled to avoid breaking binary compatibility later on char m_chAccel; // enabled to avoid breaking binary compatibility later on
bool m_createComplete;
private: private:
DECLARE_DYNAMIC_CLASS(wxControl) DECLARE_DYNAMIC_CLASS(wxControl)

View File

@@ -57,8 +57,7 @@ public:
wxString GetLabel() const; wxString GetLabel() const;
void SetLabel( const wxString &label ); void SetLabel( const wxString &label );
bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); } bool SetFont( const wxFont &font );
bool SetForegroundColour( const wxColour& colour ); bool SetForegroundColour( const wxColour& colour );
static wxVisualAttributes static wxVisualAttributes

View File

@@ -40,6 +40,7 @@ public:
// accessors // accessors
void SetLabel( const wxString &str ) ; void SetLabel( const wxString &str ) ;
bool SetFont( const wxFont &font );
protected : protected :

View File

@@ -41,6 +41,7 @@ class WXDLLEXPORT wxStaticText: public wxStaticTextBase
// accessors // accessors
void SetLabel( const wxString &str ) ; void SetLabel( const wxString &str ) ;
bool SetFont( const wxFont &font );
// operations // operations
virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; virtual void Command(wxCommandEvent& WXUNUSED(event)) {};

View File

@@ -40,6 +40,10 @@ public:
long style = 0, long style = 0,
const wxString& name = wxStaticTextNameStr); 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: protected:
// implement/override some base class virtuals // implement/override some base class virtuals
virtual wxBorder GetDefaultBorder() const; virtual wxBorder GetDefaultBorder() const;

View File

@@ -17,8 +17,6 @@ public:
virtual void ApplyParentThemeBackground(const wxColour& bg) virtual void ApplyParentThemeBackground(const wxColour& bg)
{ SetBackgroundColour(bg); } { SetBackgroundColour(bg); }
bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); }
private: private:
DECLARE_NO_COPY_CLASS(wxStaticTextBase) DECLARE_NO_COPY_CLASS(wxStaticTextBase)
}; };

View File

@@ -46,10 +46,6 @@ void wxBookCtrl::Init()
{ {
m_imageList = NULL; m_imageList = NULL;
m_ownsImageList = false; m_ownsImageList = false;
// Unlike most controls, we don't want to adjust the min size
// when we set the font, since the page size is not related to
// the font size.
m_adjustMinSize = false;
} }
bool bool

View File

@@ -68,13 +68,6 @@ bool wxControlBase::Create(wxWindow *parent,
return ret; return ret;
} }
void wxControlBase::Init()
{
m_adjustMinSize = true;
}
bool wxControlBase::CreateControl(wxWindowBase *parent, bool wxControlBase::CreateControl(wxWindowBase *parent,
wxWindowID id, wxWindowID id,
const wxPoint& pos, const wxPoint& pos,
@@ -123,24 +116,6 @@ 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 // wxStaticBitmap
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -184,7 +184,6 @@ void wxBitmapButton::SetLabel( const wxString &label )
wxCHECK_RET( m_widget != NULL, wxT("invalid button") ); wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
wxControl::SetLabel( label ); wxControl::SetLabel( label );
PostSetLabel();
} }
wxString wxBitmapButton::GetLabel() const wxString wxBitmapButton::GetLabel() const

View File

@@ -175,8 +175,6 @@ void wxButton::SetLabel( const wxString &label )
#else #else
gtk_label_set( GTK_LABEL( BUTTON_CHILD(m_widget) ), wxGTK_CONV( GetLabel() ) ); gtk_label_set( GTK_LABEL( BUTTON_CHILD(m_widget) ), wxGTK_CONV( GetLabel() ) );
#endif #endif
PostSetLabel();
} }
bool wxButton::Enable( bool enable ) bool wxButton::Enable( bool enable )

View File

@@ -158,8 +158,6 @@ void wxCheckBox::SetLabel( const wxString& label )
#else #else
gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) ); gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) );
#endif #endif
PostSetLabel();
} }
bool wxCheckBox::Enable( bool enable ) bool wxCheckBox::Enable( bool enable )

View File

@@ -33,7 +33,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxControl, wxWindow)
wxControl::wxControl() wxControl::wxControl()
{ {
m_needParent = TRUE; m_needParent = TRUE;
m_createComplete = false;
} }
bool wxControl::Create( wxWindow *parent, bool wxControl::Create( wxWindow *parent,
@@ -44,7 +43,6 @@ bool wxControl::Create( wxWindow *parent,
const wxValidator& validator, const wxValidator& validator,
const wxString &name ) const wxString &name )
{ {
m_createComplete = false;
bool ret = wxWindow::Create(parent, id, pos, size, style, name); bool ret = wxWindow::Create(parent, id, pos, size, style, name);
#if wxUSE_VALIDATORS #if wxUSE_VALIDATORS
@@ -70,14 +68,6 @@ 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 wxString wxControl::GetLabel() const
{ {
return m_label; return m_label;
@@ -113,7 +103,6 @@ void wxControl::PostCreation(const wxSize& size)
InheritAttributes(); InheritAttributes();
ApplyWidgetStyle(); ApplyWidgetStyle();
SetInitialBestSize(size); SetInitialBestSize(size);
m_createComplete = true;
} }

View File

@@ -540,8 +540,6 @@ void wxRadioBox::SetLabel( const wxString& label )
wxControl::SetLabel( label ); wxControl::SetLabel( label );
gtk_frame_set_label( GTK_FRAME(m_widget), wxGTK_CONV( wxControl::GetLabel() ) ); gtk_frame_set_label( GTK_FRAME(m_widget), wxGTK_CONV( wxControl::GetLabel() ) );
PostSetLabel();
} }
void wxRadioBox::SetString( int item, const wxString& label ) void wxRadioBox::SetString( int item, const wxString& label )

View File

@@ -145,8 +145,6 @@ void wxRadioButton::SetLabel( const wxString& label )
#else #else
gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) ); gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) );
#endif #endif
PostSetLabel();
} }
void wxRadioButton::SetValue( bool val ) void wxRadioButton::SetValue( bool val )

View File

@@ -89,7 +89,6 @@ void wxStaticBox::SetLabel( const wxString &label )
gtk_frame_set_label( GTK_FRAME( m_widget ), gtk_frame_set_label( GTK_FRAME( m_widget ),
m_label.empty() ? (char *)NULL : (const char*) wxGTK_CONV( m_label ) ); m_label.empty() ? (char *)NULL : (const char*) wxGTK_CONV( m_label ) );
PostSetLabel();
} }
// static // static

View File

@@ -146,10 +146,27 @@ void wxStaticText::SetLabel( const wxString &label )
#else #else
gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) ); gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
#endif #endif
PostSetLabel(); // adjust the label size to the new label unless disabled
if (!HasFlag(wxST_NO_AUTORESIZE))
{
SetSize( GetBestSize() );
SetSizeHints(GetSize());
}
} }
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 wxSize wxStaticText::DoGetBestSize() const
{ {

View File

@@ -287,8 +287,6 @@ void wxToggleButton::SetLabel(const wxString& label)
wxControl::SetLabel(label); wxControl::SetLabel(label);
gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV( GetLabel() ) ); gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV( GetLabel() ) );
PostSetLabel();
} }
bool wxToggleButton::Enable(bool enable /*=TRUE*/) bool wxToggleButton::Enable(bool enable /*=TRUE*/)

View File

@@ -184,7 +184,6 @@ void wxBitmapButton::SetLabel( const wxString &label )
wxCHECK_RET( m_widget != NULL, wxT("invalid button") ); wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
wxControl::SetLabel( label ); wxControl::SetLabel( label );
PostSetLabel();
} }
wxString wxBitmapButton::GetLabel() const wxString wxBitmapButton::GetLabel() const

View File

@@ -175,8 +175,6 @@ void wxButton::SetLabel( const wxString &label )
#else #else
gtk_label_set( GTK_LABEL( BUTTON_CHILD(m_widget) ), wxGTK_CONV( GetLabel() ) ); gtk_label_set( GTK_LABEL( BUTTON_CHILD(m_widget) ), wxGTK_CONV( GetLabel() ) );
#endif #endif
PostSetLabel();
} }
bool wxButton::Enable( bool enable ) bool wxButton::Enable( bool enable )

View File

@@ -158,8 +158,6 @@ void wxCheckBox::SetLabel( const wxString& label )
#else #else
gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) ); gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) );
#endif #endif
PostSetLabel();
} }
bool wxCheckBox::Enable( bool enable ) bool wxCheckBox::Enable( bool enable )

View File

@@ -33,7 +33,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxControl, wxWindow)
wxControl::wxControl() wxControl::wxControl()
{ {
m_needParent = TRUE; m_needParent = TRUE;
m_createComplete = false;
} }
bool wxControl::Create( wxWindow *parent, bool wxControl::Create( wxWindow *parent,
@@ -44,7 +43,6 @@ bool wxControl::Create( wxWindow *parent,
const wxValidator& validator, const wxValidator& validator,
const wxString &name ) const wxString &name )
{ {
m_createComplete = false;
bool ret = wxWindow::Create(parent, id, pos, size, style, name); bool ret = wxWindow::Create(parent, id, pos, size, style, name);
#if wxUSE_VALIDATORS #if wxUSE_VALIDATORS
@@ -70,14 +68,6 @@ 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 wxString wxControl::GetLabel() const
{ {
return m_label; return m_label;
@@ -113,7 +103,6 @@ void wxControl::PostCreation(const wxSize& size)
InheritAttributes(); InheritAttributes();
ApplyWidgetStyle(); ApplyWidgetStyle();
SetInitialBestSize(size); SetInitialBestSize(size);
m_createComplete = true;
} }

View File

@@ -540,8 +540,6 @@ void wxRadioBox::SetLabel( const wxString& label )
wxControl::SetLabel( label ); wxControl::SetLabel( label );
gtk_frame_set_label( GTK_FRAME(m_widget), wxGTK_CONV( wxControl::GetLabel() ) ); gtk_frame_set_label( GTK_FRAME(m_widget), wxGTK_CONV( wxControl::GetLabel() ) );
PostSetLabel();
} }
void wxRadioBox::SetString( int item, const wxString& label ) void wxRadioBox::SetString( int item, const wxString& label )

View File

@@ -145,8 +145,6 @@ void wxRadioButton::SetLabel( const wxString& label )
#else #else
gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) ); gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) );
#endif #endif
PostSetLabel();
} }
void wxRadioButton::SetValue( bool val ) void wxRadioButton::SetValue( bool val )

View File

@@ -89,7 +89,6 @@ void wxStaticBox::SetLabel( const wxString &label )
gtk_frame_set_label( GTK_FRAME( m_widget ), gtk_frame_set_label( GTK_FRAME( m_widget ),
m_label.empty() ? (char *)NULL : (const char*) wxGTK_CONV( m_label ) ); m_label.empty() ? (char *)NULL : (const char*) wxGTK_CONV( m_label ) );
PostSetLabel();
} }
// static // static

View File

@@ -146,10 +146,27 @@ void wxStaticText::SetLabel( const wxString &label )
#else #else
gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) ); gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
#endif #endif
PostSetLabel(); // adjust the label size to the new label unless disabled
if (!HasFlag(wxST_NO_AUTORESIZE))
{
SetSize( GetBestSize() );
SetSizeHints(GetSize());
}
} }
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 wxSize wxStaticText::DoGetBestSize() const
{ {

View File

@@ -287,8 +287,6 @@ void wxToggleButton::SetLabel(const wxString& label)
wxControl::SetLabel(label); wxControl::SetLabel(label);
gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV( GetLabel() ) ); gtk_label_set(GTK_LABEL(BUTTON_CHILD(m_widget)), wxGTK_CONV( GetLabel() ) );
PostSetLabel();
} }
bool wxToggleButton::Enable(bool enable /*=TRUE*/) bool wxToggleButton::Enable(bool enable /*=TRUE*/)

View File

@@ -92,9 +92,27 @@ void wxStaticText::SetLabel(const wxString& st )
SetControlData( *m_peer, kControlEntireControl , kControlStaticTextCFStringTag, sizeof( CFStringRef ), SetControlData( *m_peer, kControlEntireControl , kControlStaticTextCFStringTag, sizeof( CFStringRef ),
&ref ); &ref );
if (GetAdjustMinSizeFlag()) if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
SetBestSize(wxDefaultSize); {
SetSize( GetBestSize() ) ;
SetSizeHints(GetSize());
}
Update() ; 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;
}

View File

@@ -232,11 +232,31 @@ void wxStaticText::SetLabel(const wxString& st )
{ {
SetTitle( st ) ; SetTitle( st ) ;
m_label = st ; m_label = st ;
if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
if (GetAdjustMinSizeFlag()) {
SetBestSize(wxDefaultSize); // temporary fix until layout measurement and drawing are in synch again
Refresh() ;
SetSize( GetBestSize() ) ;
}
Refresh() ; Refresh() ;
Update() ; 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;
}

View File

@@ -207,5 +207,33 @@ void wxStaticText::DoSetSize(int x, int y, int w, int h, int sizeFlags)
Refresh(); 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 #endif // wxUSE_STATTEXT