Refactor: extra wxStaticText auto-resizing code from wxMSW to common.
This will allow its reuse in wxGenericStaticText and maybe other ports that need it in the future. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78061 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
4936366716
commit
f0aea4098c
@ -78,6 +78,10 @@ protected: // functions required for wxST_ELLIPSIZE_* support
|
||||
// but may contain the mnemonic characters.
|
||||
virtual void DoSetLabel(const wxString& WXUNUSED(str)) { }
|
||||
|
||||
// Update the current size to match the best size unless wxST_NO_AUTORESIZE
|
||||
// style is explicitly used.
|
||||
void AutoResizeIfNecessary();
|
||||
|
||||
private:
|
||||
wxDECLARE_NO_COPY_CLASS(wxStaticTextBase);
|
||||
};
|
||||
|
@ -194,6 +194,18 @@ void wxStaticTextBase::Wrap(int width)
|
||||
wrapper.WrapLabel(this, width);
|
||||
}
|
||||
|
||||
void wxStaticTextBase::AutoResizeIfNecessary()
|
||||
{
|
||||
// adjust the size of the window to fit to the label unless autoresizing is
|
||||
// disabled
|
||||
if ( !HasFlag(wxST_NO_AUTORESIZE) )
|
||||
{
|
||||
InvalidateBestSize();
|
||||
DoSetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, wxDefaultCoord,
|
||||
wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxStaticTextBase - generic implementation for wxST_ELLIPSIZE_* support
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -186,31 +186,20 @@ void wxStaticText::SetLabel(const wxString& label)
|
||||
#endif // SS_ENDELLIPSIS
|
||||
DoSetLabel(GetEllipsizedLabel());
|
||||
|
||||
// adjust the size of the window to fit to the label unless autoresizing is
|
||||
// disabled
|
||||
if ( !HasFlag(wxST_NO_AUTORESIZE) &&
|
||||
!IsEllipsized() ) // if ellipsize is ON, then we don't want to get resized!
|
||||
if ( !IsEllipsized() ) // if ellipsize is ON, then we don't want to get resized!
|
||||
{
|
||||
InvalidateBestSize();
|
||||
DoSetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, wxDefaultCoord,
|
||||
wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
|
||||
AutoResizeIfNecessary();
|
||||
}
|
||||
}
|
||||
|
||||
bool wxStaticText::SetFont(const wxFont& font)
|
||||
{
|
||||
bool ret = wxControl::SetFont(font);
|
||||
if ( !wxControl::SetFont(font) )
|
||||
return false;
|
||||
|
||||
// adjust the size of the window to fit to the label unless autoresizing is
|
||||
// disabled
|
||||
if ( !HasFlag(wxST_NO_AUTORESIZE) )
|
||||
{
|
||||
InvalidateBestSize();
|
||||
DoSetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, wxDefaultCoord,
|
||||
wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
|
||||
}
|
||||
AutoResizeIfNecessary();
|
||||
|
||||
return ret;
|
||||
return true;
|
||||
}
|
||||
|
||||
// for wxST_ELLIPSIZE_* support:
|
||||
|
Loading…
Reference in New Issue
Block a user