//----------------------------------------------------------------------------
void Layout::setGeometry(const SGRecti& geom)
{
- if( geom == _geometry )
- return;
-
- _geometry = geom;
- _flags |= LAYOUT_DIRTY;
+ if( geom != _geometry )
+ {
+ _geometry = geom;
+ _flags |= LAYOUT_DIRTY;
+ }
update();
}
}
}
+ //----------------------------------------------------------------------------
+ void Layout::clear()
+ {
+ while( itemAt(0) )
+ takeAt(0);
+ }
+
//----------------------------------------------------------------------------
void Layout::ItemData::reset()
{
padding = 0;
size = 0;
stretch = 0;
+ has_hfw = false;
done = false;
}
+ //----------------------------------------------------------------------------
+ int Layout::ItemData::hfw(int w) const
+ {
+ if( has_hfw )
+ return layout_item->heightForWidth(w);
+ else
+ return layout_item->sizeHint().y();
+ }
+
+ //----------------------------------------------------------------------------
+ int Layout::ItemData::mhfw(int w) const
+ {
+ if( has_hfw )
+ return layout_item->minimumHeightForWidth(w);
+ else
+ return layout_item->minimumSize().y();
+ }
+
//----------------------------------------------------------------------------
void Layout::safeAdd(int& a, int b)
{
SG_LOG( SG_GUI,
SG_DEBUG,
- "Layout::distribute(" << num_children << " items)" );
+ "Layout::distribute(" << space.size << "px for "
+ << num_children << " items, s.t."
+ << " min=" << space.min_size
+ << ", hint=" << space.size_hint
+ << ", max=" << space.max_size << ")" );
if( space.size < space.min_size )
{
d.padding = d.padding_orig;
d.done = d.size >= (less_then_hint ? d.size_hint : d.max_size);
+ SG_LOG(
+ SG_GUI,
+ SG_DEBUG,
+ i << ") initial=" << d.size
+ << ", min=" << d.min_size
+ << ", hint=" << d.size_hint
+ << ", max=" << d.max_size
+ );
+
if( d.done )
{
_num_not_done -= 1;