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:
parent
478ba84485
commit
c0e6c05138
@ -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}.
|
||||
|
||||
|
||||
\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}
|
||||
@ -44,14 +36,6 @@ SetLabel or SetFont are called.
|
||||
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}}
|
||||
|
@ -32,11 +32,10 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxControlNameStr;
|
||||
// wxControl is the base class for all controls
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
class WXDLLEXPORT wxControlBase : public wxWindow
|
||||
{
|
||||
public:
|
||||
wxControlBase() { Init(); }
|
||||
wxControlBase() { }
|
||||
|
||||
virtual ~wxControlBase();
|
||||
|
||||
@ -64,16 +63,7 @@ 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,
|
||||
@ -98,9 +88,6 @@ protected:
|
||||
SetBestSize(size);
|
||||
}
|
||||
|
||||
// should minsize and size be adjusted when font or label change?
|
||||
bool m_adjustMinSize;
|
||||
|
||||
DECLARE_NO_COPY_CLASS(wxControlBase)
|
||||
};
|
||||
|
||||
|
@ -58,7 +58,6 @@ public:
|
||||
protected:
|
||||
virtual wxSize DoGetBestSize() const;
|
||||
void PostCreation(const wxSize& size);
|
||||
void PostSetLabel();
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
wxString PrepareLabelMnemonics( const wxString &label ) const;
|
||||
@ -89,7 +88,6 @@ protected:
|
||||
|
||||
wxString m_label;
|
||||
char m_chAccel; // enabled to avoid breaking binary compatibility later on
|
||||
bool m_createComplete;
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(wxControl)
|
||||
|
@ -57,8 +57,7 @@ public:
|
||||
wxString GetLabel() const;
|
||||
void SetLabel( const wxString &label );
|
||||
|
||||
bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); }
|
||||
|
||||
bool SetFont( const wxFont &font );
|
||||
bool SetForegroundColour( const wxColour& colour );
|
||||
|
||||
static wxVisualAttributes
|
||||
|
@ -58,7 +58,6 @@ public:
|
||||
protected:
|
||||
virtual wxSize DoGetBestSize() const;
|
||||
void PostCreation(const wxSize& size);
|
||||
void PostSetLabel();
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
wxString PrepareLabelMnemonics( const wxString &label ) const;
|
||||
@ -89,7 +88,6 @@ protected:
|
||||
|
||||
wxString m_label;
|
||||
char m_chAccel; // enabled to avoid breaking binary compatibility later on
|
||||
bool m_createComplete;
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(wxControl)
|
||||
|
@ -57,8 +57,7 @@ public:
|
||||
wxString GetLabel() const;
|
||||
void SetLabel( const wxString &label );
|
||||
|
||||
bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); }
|
||||
|
||||
bool SetFont( const wxFont &font );
|
||||
bool SetForegroundColour( const wxColour& colour );
|
||||
|
||||
static wxVisualAttributes
|
||||
|
@ -40,6 +40,7 @@ public:
|
||||
|
||||
// accessors
|
||||
void SetLabel( const wxString &str ) ;
|
||||
bool SetFont( const wxFont &font );
|
||||
|
||||
protected :
|
||||
|
||||
|
@ -41,6 +41,7 @@ class WXDLLEXPORT wxStaticText: public wxStaticTextBase
|
||||
|
||||
// accessors
|
||||
void SetLabel( const wxString &str ) ;
|
||||
bool SetFont( const wxFont &font );
|
||||
|
||||
// operations
|
||||
virtual void Command(wxCommandEvent& WXUNUSED(event)) {};
|
||||
|
@ -40,6 +40,10 @@ 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;
|
||||
|
@ -17,8 +17,6 @@ public:
|
||||
virtual void ApplyParentThemeBackground(const wxColour& bg)
|
||||
{ SetBackgroundColour(bg); }
|
||||
|
||||
bool GetAdjustMinSizeFlag() const { return !HasFlag(wxST_NO_AUTORESIZE); }
|
||||
|
||||
private:
|
||||
DECLARE_NO_COPY_CLASS(wxStaticTextBase)
|
||||
};
|
||||
|
@ -46,10 +46,6 @@ void wxBookCtrl::Init()
|
||||
{
|
||||
m_imageList = NULL;
|
||||
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
|
||||
|
@ -68,13 +68,6 @@ bool wxControlBase::Create(wxWindow *parent,
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
void wxControlBase::Init()
|
||||
{
|
||||
m_adjustMinSize = true;
|
||||
}
|
||||
|
||||
|
||||
bool wxControlBase::CreateControl(wxWindowBase *parent,
|
||||
wxWindowID id,
|
||||
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
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -184,7 +184,6 @@ void wxBitmapButton::SetLabel( const wxString &label )
|
||||
wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
|
||||
|
||||
wxControl::SetLabel( label );
|
||||
PostSetLabel();
|
||||
}
|
||||
|
||||
wxString wxBitmapButton::GetLabel() const
|
||||
|
@ -175,8 +175,6 @@ 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 )
|
||||
|
@ -158,8 +158,6 @@ void wxCheckBox::SetLabel( const wxString& label )
|
||||
#else
|
||||
gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) );
|
||||
#endif
|
||||
|
||||
PostSetLabel();
|
||||
}
|
||||
|
||||
bool wxCheckBox::Enable( bool enable )
|
||||
|
@ -33,7 +33,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxControl, wxWindow)
|
||||
wxControl::wxControl()
|
||||
{
|
||||
m_needParent = TRUE;
|
||||
m_createComplete = false;
|
||||
}
|
||||
|
||||
bool wxControl::Create( wxWindow *parent,
|
||||
@ -44,7 +43,6 @@ 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
|
||||
@ -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
|
||||
{
|
||||
return m_label;
|
||||
@ -113,7 +103,6 @@ void wxControl::PostCreation(const wxSize& size)
|
||||
InheritAttributes();
|
||||
ApplyWidgetStyle();
|
||||
SetInitialBestSize(size);
|
||||
m_createComplete = true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -540,8 +540,6 @@ 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 )
|
||||
|
@ -145,8 +145,6 @@ void wxRadioButton::SetLabel( const wxString& label )
|
||||
#else
|
||||
gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) );
|
||||
#endif
|
||||
|
||||
PostSetLabel();
|
||||
}
|
||||
|
||||
void wxRadioButton::SetValue( bool val )
|
||||
|
@ -89,7 +89,6 @@ 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
|
||||
|
@ -146,10 +146,27 @@ void wxStaticText::SetLabel( const wxString &label )
|
||||
#else
|
||||
gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
|
||||
#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
|
||||
{
|
||||
|
@ -287,8 +287,6 @@ 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*/)
|
||||
|
@ -184,7 +184,6 @@ void wxBitmapButton::SetLabel( const wxString &label )
|
||||
wxCHECK_RET( m_widget != NULL, wxT("invalid button") );
|
||||
|
||||
wxControl::SetLabel( label );
|
||||
PostSetLabel();
|
||||
}
|
||||
|
||||
wxString wxBitmapButton::GetLabel() const
|
||||
|
@ -175,8 +175,6 @@ 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 )
|
||||
|
@ -158,8 +158,6 @@ void wxCheckBox::SetLabel( const wxString& label )
|
||||
#else
|
||||
gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) );
|
||||
#endif
|
||||
|
||||
PostSetLabel();
|
||||
}
|
||||
|
||||
bool wxCheckBox::Enable( bool enable )
|
||||
|
@ -33,7 +33,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxControl, wxWindow)
|
||||
wxControl::wxControl()
|
||||
{
|
||||
m_needParent = TRUE;
|
||||
m_createComplete = false;
|
||||
}
|
||||
|
||||
bool wxControl::Create( wxWindow *parent,
|
||||
@ -44,7 +43,6 @@ 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
|
||||
@ -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
|
||||
{
|
||||
return m_label;
|
||||
@ -113,7 +103,6 @@ void wxControl::PostCreation(const wxSize& size)
|
||||
InheritAttributes();
|
||||
ApplyWidgetStyle();
|
||||
SetInitialBestSize(size);
|
||||
m_createComplete = true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -540,8 +540,6 @@ 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 )
|
||||
|
@ -145,8 +145,6 @@ void wxRadioButton::SetLabel( const wxString& label )
|
||||
#else
|
||||
gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) );
|
||||
#endif
|
||||
|
||||
PostSetLabel();
|
||||
}
|
||||
|
||||
void wxRadioButton::SetValue( bool val )
|
||||
|
@ -89,7 +89,6 @@ 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
|
||||
|
@ -146,10 +146,27 @@ void wxStaticText::SetLabel( const wxString &label )
|
||||
#else
|
||||
gtk_label_set( GTK_LABEL(m_widget), wxGTK_CONV( m_label ) );
|
||||
#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
|
||||
{
|
||||
|
@ -287,8 +287,6 @@ 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*/)
|
||||
|
@ -92,9 +92,27 @@ void wxStaticText::SetLabel(const wxString& st )
|
||||
SetControlData( *m_peer, kControlEntireControl , kControlStaticTextCFStringTag, sizeof( CFStringRef ),
|
||||
&ref );
|
||||
|
||||
if (GetAdjustMinSizeFlag())
|
||||
SetBestSize(wxDefaultSize);
|
||||
if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
|
||||
{
|
||||
SetSize( GetBestSize() ) ;
|
||||
SetSizeHints(GetSize());
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
@ -232,11 +232,31 @@ void wxStaticText::SetLabel(const wxString& st )
|
||||
{
|
||||
SetTitle( st ) ;
|
||||
m_label = st ;
|
||||
|
||||
if (GetAdjustMinSizeFlag())
|
||||
SetBestSize(wxDefaultSize);
|
||||
|
||||
if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
|
||||
{
|
||||
// temporary fix until layout measurement and drawing are in synch again
|
||||
Refresh() ;
|
||||
SetSize( GetBestSize() ) ;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
@ -207,5 +207,33 @@ 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
|
||||
|
Loading…
Reference in New Issue
Block a user