added wxADJUST_MINSIZE sizer flag
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9369 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -18,6 +18,7 @@ All (GUI):
|
||||
|
||||
- new wxToggleButton class (John Norris, Axel Schlueter)
|
||||
- wxCalendarCtrl now highlighting the date with time part bug fixed
|
||||
- wxADJUST_MINSIZE sizer flag added
|
||||
|
||||
wxMSW:
|
||||
|
||||
|
@@ -80,20 +80,28 @@ children of the same wxBoxSizer. For example, you might have a horizontal wxBoxS
|
||||
of which are supposed to change their size with the sizer. Then the two stretchable windows would get a
|
||||
value of 1 each to make them grow and shrink equally with the sizer's horizontal dimension.}
|
||||
|
||||
\docparam{flag}{This parameter can be used to set a number of flags which can be combined using
|
||||
the binary OR operator |. Two main behaviours are defined using these flags. One is the border
|
||||
around a window: the {\it border} parameter determines the border width whereas the flags given here
|
||||
determine where the border may be (wxTOP, wxBOTTOM, wxLEFT, wxRIGHT or wxALL). The other flags
|
||||
determine the child window's behaviour if the size of the sizer changes. However this is not - in contrast to
|
||||
the {\it option} flag - in the main orientation, but in the respectively other orientation. So
|
||||
if you created a wxBoxSizer with the wxVERTICAL option, these flags will be relevant if the
|
||||
sizer changes its horizontal size. A child may get resized to completely fill out the new size (using
|
||||
either wxGROW or wxEXPAND), it may get proportionally resized (wxSHAPED), it may get centered (wxALIGN\_CENTER
|
||||
or wxALIGN\_CENTRE) or it may get aligned to either side (wxALIGN\_LEFT and wxALIGN\_TOP are set to 0
|
||||
and thus represent the default, wxALIGN\_RIGHT and wxALIGN\_BOTTOM have their obvious meaning).
|
||||
With proportional resize, a child may also be centered in the main orientation using
|
||||
wxALIGN\_CENTER\_VERTICAL (same as wxALIGN\_CENTRE\_VERTICAL) and wxALIGN\_CENTER\_HORIZONTAL
|
||||
(same as wxALIGN\_CENTRE\_HORIZONTAL) flags.}
|
||||
\docparam{flag}{This parameter can be used to set a number of flags which can
|
||||
be combined using the binary OR operator |. Two main behaviours are defined
|
||||
using these flags. One is the border around a window: the {\it border}
|
||||
parameter determines the border width whereas the flags given here determine
|
||||
where the border may be (wxTOP, wxBOTTOM, wxLEFT, wxRIGHT or wxALL). The other
|
||||
flags determine the child window's behaviour if the size of the sizer changes.
|
||||
However this is not - in contrast to the {\it option} flag - in the main
|
||||
orientation, but in the respectively other orientation. So if you created a
|
||||
wxBoxSizer with the wxVERTICAL option, these flags will be relevant if the
|
||||
sizer changes its horizontal size. A child may get resized to completely fill
|
||||
out the new size (using either wxGROW or wxEXPAND), it may get proportionally
|
||||
resized (wxSHAPED), it may get centered (wxALIGN\_CENTER or wxALIGN\_CENTRE)
|
||||
or it may get aligned to either side (wxALIGN\_LEFT and wxALIGN\_TOP are set
|
||||
to 0 and thus represent the default, wxALIGN\_RIGHT and wxALIGN\_BOTTOM have
|
||||
their obvious meaning). With proportional resize, a child may also be centered
|
||||
in the main orientation using wxALIGN\_CENTER\_VERTICAL (same as
|
||||
wxALIGN\_CENTRE\_VERTICAL) and wxALIGN\_CENTER\_HORIZONTAL (same as
|
||||
wxALIGN\_CENTRE\_HORIZONTAL) flags. Finally, you can also specify
|
||||
wxAGJUST\_MIN flag to make the minimal size of the control dynamically adjust
|
||||
to the value returned by its \helpref{GetBestSize()}{wxwindowgetbestsize}
|
||||
method - this allows, for example, for correct relayouting of a static text
|
||||
control even if its text is changed during run-time.}
|
||||
|
||||
\docparam{border}{Determines the border width, if the {\it flag} parameter is set to any border.}
|
||||
|
||||
|
@@ -133,21 +133,28 @@ wxSize wxSizerItem::CalcMin()
|
||||
if (IsSizer())
|
||||
{
|
||||
ret = m_sizer->GetMinSize();
|
||||
|
||||
// if we have to preserve aspect ratio _AND_ this is
|
||||
// the first-time calculation, consider ret to be initial size
|
||||
if ((m_flag & wxSHAPED) && !m_ratio) SetRatio(ret);
|
||||
if ((m_flag & wxSHAPED) && !m_ratio)
|
||||
SetRatio(ret);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( IsWindow() && (m_flag & wxADJUST_MINSIZE) )
|
||||
{
|
||||
// check if the best (minimal, in fact) window size hadn't changed
|
||||
// by chance: this may happen for, e.g. static text if its label
|
||||
// changed
|
||||
wxSize size = m_window->GetBestSize();
|
||||
if ( size.x > m_minSize.x )
|
||||
m_minSize.x = size.x;
|
||||
if ( size.y > m_minSize.y )
|
||||
m_minSize.y = size.y;
|
||||
}
|
||||
|
||||
/*
|
||||
The minimum size of a window should be the
|
||||
initial size, as saved in m_minSize, not the
|
||||
current size.
|
||||
|
||||
else
|
||||
if (IsWindow())
|
||||
ret = m_window->GetSize();
|
||||
*/
|
||||
else ret = m_minSize;
|
||||
ret = m_minSize;
|
||||
}
|
||||
|
||||
if (m_flag & wxWEST)
|
||||
ret.x += m_border;
|
||||
|
Reference in New Issue
Block a user