fix from Robert
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8420 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
03c046d1d5
commit
cdddaeea10
@ -163,6 +163,36 @@ wxSize wxSizerItem::CalcMin()
|
|||||||
|
|
||||||
void wxSizerItem::SetDimension( wxPoint pos, wxSize size )
|
void wxSizerItem::SetDimension( wxPoint pos, wxSize size )
|
||||||
{
|
{
|
||||||
|
if (m_flag & wxSHAPED)
|
||||||
|
{
|
||||||
|
// adjust aspect ratio
|
||||||
|
int rwidth = (int) (size.y * m_ratio);
|
||||||
|
if (rwidth > size.x)
|
||||||
|
{
|
||||||
|
// fit horizontally
|
||||||
|
int rheight = (int) (size.x / m_ratio);
|
||||||
|
// add vertical space
|
||||||
|
if (m_flag & wxALIGN_CENTER_VERTICAL)
|
||||||
|
pos.y += (size.y - rheight) / 2;
|
||||||
|
else if (m_flag & wxALIGN_BOTTOM)
|
||||||
|
pos.y += (size.y - rheight);
|
||||||
|
// use reduced dimensions
|
||||||
|
size.y =rheight;
|
||||||
|
}
|
||||||
|
else if (rwidth < size.x)
|
||||||
|
{
|
||||||
|
// add horizontal space
|
||||||
|
if (m_flag & wxALIGN_CENTER_HORIZONTAL)
|
||||||
|
pos.x += (size.x - rwidth) / 2;
|
||||||
|
else if (m_flag & wxALIGN_RIGHT)
|
||||||
|
pos.x += (size.x - rwidth);
|
||||||
|
size.x = rwidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is what GetPosition() returns. Since we calculate
|
||||||
|
// borders afterwards, GetPosition() will be the left/top
|
||||||
|
// corner of the surrounding border.
|
||||||
m_pos = pos;
|
m_pos = pos;
|
||||||
|
|
||||||
if (m_flag & wxWEST)
|
if (m_flag & wxWEST)
|
||||||
@ -183,28 +213,6 @@ void wxSizerItem::SetDimension( wxPoint pos, wxSize size )
|
|||||||
{
|
{
|
||||||
size.y -= m_border;
|
size.y -= m_border;
|
||||||
}
|
}
|
||||||
if (m_flag & wxSHAPED) {
|
|
||||||
// adjust aspect ratio
|
|
||||||
int rwidth = (int) (size.y * m_ratio);
|
|
||||||
if (rwidth > size.x) {
|
|
||||||
// fit horizontally
|
|
||||||
int rheight = (int) (size.x / m_ratio);
|
|
||||||
// add vertical space
|
|
||||||
if (m_flag & wxALIGN_CENTER_VERTICAL)
|
|
||||||
pos.y += (size.y - rheight) / 2;
|
|
||||||
else if (m_flag & wxALIGN_BOTTOM)
|
|
||||||
pos.y += (size.y - rheight);
|
|
||||||
// use reduced dimensions
|
|
||||||
size.y =rheight;
|
|
||||||
} else if (rwidth < size.x) {
|
|
||||||
// add horizontal space
|
|
||||||
if (m_flag & wxALIGN_CENTER_HORIZONTAL)
|
|
||||||
pos.x += (size.x - rwidth) / 2;
|
|
||||||
else if (m_flag & wxALIGN_RIGHT)
|
|
||||||
pos.x += (size.x - rwidth);
|
|
||||||
size.x = rwidth;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsSizer())
|
if (IsSizer())
|
||||||
m_sizer->SetDimension( pos.x, pos.y, size.x, size.y );
|
m_sizer->SetDimension( pos.x, pos.y, size.x, size.y );
|
||||||
|
Loading…
Reference in New Issue
Block a user