height = 0;
for(idx=row; idx <= endrow; idx++)
- height += m_rowHeights[idx] + m_vgap;
+ height += m_rowHeights[idx];
+ height += (endrow - row) * m_vgap; // add a vgap for every row spanned
width = 0;
for (idx=col; idx <= endcol; idx++)
- width += m_colWidths[idx] + m_hgap;
+ width += m_colWidths[idx];
+ width += (endcol - col) * m_hgap; // add a hgap for every col spanned
SetItemBounds(item, colpos[col], rowpos[row], width, height);
void wxGridSizer::SetItemBounds( wxSizerItem *item, int x, int y, int w, int h )
{
wxPoint pt( x,y );
- wxSize sz( item->CalcMin() );
+ wxSize sz( item->GetMinSizeWithBorder() );
int flag = item->GetFlag();
if ((flag & wxEXPAND) || (flag & wxSHAPED))
{
if (flag & wxALIGN_CENTER_HORIZONTAL)
{
- pt.x = x + (w - sz.x - m_hgap) / 2;
+ pt.x = x + (w - sz.x) / 2;
}
else if (flag & wxALIGN_RIGHT)
{
- pt.x = x + (w - sz.x - m_hgap);
+ pt.x = x + (w - sz.x);
}
if (flag & wxALIGN_CENTER_VERTICAL)
{
- pt.y = y + (h - sz.y - m_vgap) / 2;
+ pt.y = y + (h - sz.y) / 2;
}
else if (flag & wxALIGN_BOTTOM)
{
- pt.y = y + (h - sz.y - m_vgap);
+ pt.y = y + (h - sz.y);
}
}