Added wxSizerItem::SetMinSize that calls m_window->SetSizeHints if not

wxFIXED_MINSIZE, SetInitSize and SetItemMinSize uses SetMinSize, and
fixed [ 934651 ] sizeritem's 'minsize' value has no effect in xrc resources


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26778 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-04-14 23:45:21 +00:00
parent 1ebfafde51
commit 1eba219387
4 changed files with 19 additions and 10 deletions

View File

@@ -122,7 +122,6 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem()
{ {
// create a sizer item for it // create a sizer item for it
wxSizerItem* sitem = MakeSizerItem(); wxSizerItem* sitem = MakeSizerItem();
SetSizerItemAttributes(sitem);
// now fetch the item to be managed // now fetch the item to be managed
bool old_gbs = m_isGBS; bool old_gbs = m_isGBS;
@@ -146,6 +145,9 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem()
else else
wxLogError(wxT("Error in resource.")); wxLogError(wxT("Error in resource."));
// finally, set other wxSizerItem attributes
SetSizerItemAttributes(sitem);
AddSizerItem(sitem); AddSizerItem(sitem);
return item; return item;
} }
@@ -339,7 +341,7 @@ void wxSizerXmlHandler::SetSizerItemAttributes(wxSizerItem* sitem)
sitem->SetBorder(GetDimension(wxT("border"))); sitem->SetBorder(GetDimension(wxT("border")));
wxSize sz = GetSize(wxT("minsize")); wxSize sz = GetSize(wxT("minsize"));
if (!(sz == wxDefaultSize)) if (!(sz == wxDefaultSize))
sitem->SetInitSize(sz.x, sz.y); sitem->SetMinSize(sz);
sz = GetSize(wxT("ratio")); sz = GetSize(wxT("ratio"));
if (!(sz == wxDefaultSize)) if (!(sz == wxDefaultSize))
sitem->SetRatio(sz); sitem->SetRatio(sz);

View File

@@ -74,8 +74,16 @@ public:
wxSize GetMinSize() const wxSize GetMinSize() const
{ return m_minSize; } { return m_minSize; }
void SetMinSize(const wxSize& size)
{
if (IsWindow() && !(m_flag & wxFIXED_MINSIZE))
m_window->SetSizeHints(size);
m_minSize = size;
}
void SetMinSize( int x, int y )
{ SetMinSize(wxSize(x, y)); }
void SetInitSize( int x, int y ) void SetInitSize( int x, int y )
{ m_minSize.x = x; m_minSize.y = y; } { SetMinSize(wxSize(x, y)); }
void SetRatio( int width, int height ) void SetRatio( int width, int height )
// if either of dimensions is zero, ratio is assumed to be 1 // if either of dimensions is zero, ratio is assumed to be 1

View File

@@ -735,8 +735,7 @@ bool wxSizer::DoSetItemMinSize( wxWindow *window, int width, int height )
if (item->GetWindow() == window) if (item->GetWindow() == window)
{ {
item->SetInitSize( width, height ); item->SetMinSize( width, height );
item->GetWindow()->SetSizeHints(width, height);
return true; return true;
} }
node = node->GetNext(); node = node->GetNext();
@@ -815,9 +814,7 @@ bool wxSizer::DoSetItemMinSize( size_t index, int width, int height )
else else
{ {
// ... but the minimal size of spacers and windows in stored in them // ... but the minimal size of spacers and windows in stored in them
item->SetInitSize( width, height ); item->SetMinSize( width, height );
if (item->GetWindow())
item->GetWindow()->SetSizeHints(width, height);
} }
return true; return true;

View File

@@ -122,7 +122,6 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem()
{ {
// create a sizer item for it // create a sizer item for it
wxSizerItem* sitem = MakeSizerItem(); wxSizerItem* sitem = MakeSizerItem();
SetSizerItemAttributes(sitem);
// now fetch the item to be managed // now fetch the item to be managed
bool old_gbs = m_isGBS; bool old_gbs = m_isGBS;
@@ -146,6 +145,9 @@ wxObject* wxSizerXmlHandler::Handle_sizeritem()
else else
wxLogError(wxT("Error in resource.")); wxLogError(wxT("Error in resource."));
// finally, set other wxSizerItem attributes
SetSizerItemAttributes(sitem);
AddSizerItem(sitem); AddSizerItem(sitem);
return item; return item;
} }
@@ -339,7 +341,7 @@ void wxSizerXmlHandler::SetSizerItemAttributes(wxSizerItem* sitem)
sitem->SetBorder(GetDimension(wxT("border"))); sitem->SetBorder(GetDimension(wxT("border")));
wxSize sz = GetSize(wxT("minsize")); wxSize sz = GetSize(wxT("minsize"));
if (!(sz == wxDefaultSize)) if (!(sz == wxDefaultSize))
sitem->SetInitSize(sz.x, sz.y); sitem->SetMinSize(sz);
sz = GetSize(wxT("ratio")); sz = GetSize(wxT("ratio"));
if (!(sz == wxDefaultSize)) if (!(sz == wxDefaultSize))
sitem->SetRatio(sz); sitem->SetRatio(sz);