From 6217b9aa7eec987c5177ad1300a0847b77c1abb5 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Fri, 7 Nov 2003 17:45:10 +0000 Subject: [PATCH] Set m_rows, m_cols so GetRows/GetCols in the base class work. Added GetCellSize method. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/wx/gridbagsizer.tex | 9 +++++++++ include/wx/gbsizer.h | 4 ++++ src/common/gbsizer.cpp | 35 +++++++++++++++++++++------------- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/docs/latex/wx/gridbagsizer.tex b/docs/latex/wx/gridbagsizer.tex index fefb812f50..a0d1e0ff4f 100644 --- a/docs/latex/wx/gridbagsizer.tex +++ b/docs/latex/wx/gridbagsizer.tex @@ -94,6 +94,15 @@ pointer values) or NULL if not found. (non-recursive) +\membersection{wxGridBagSizer::GetCellSize}\label{wxgridbagsizergetcellsize} + +\constfunc{wxSize}{GetCellSize}{\param{int }{row}, \param{int }{col}} + +Get the size of the specified cell, including hgap and vgap. Only +valid after a Layout. + + + \membersection{wxGridBagSizer::GetEmptyCellSize}\label{wxgridbagsizergetemptycellsize} \constfunc{wxSize}{GetEmptyCellSize}{\void} diff --git a/include/wx/gbsizer.h b/include/wx/gbsizer.h index 797d9d377d..f8385b947b 100644 --- a/include/wx/gbsizer.h +++ b/include/wx/gbsizer.h @@ -202,6 +202,10 @@ public: wxSize GetEmptyCellSize() const { return m_emptyCellSize; } void SetEmptyCellSize(const wxSize& sz) { m_emptyCellSize = sz; } + // Get the size of the specified cell, including hgap and vgap. Only + // valid after a Layout. + wxSize GetCellSize(int row, int col) const; + // Get the grid position of the specified item (non-recursive) wxGBPosition GetItemPosition(wxWindow *window); wxGBPosition GetItemPosition(wxSizer *sizer); diff --git a/src/common/gbsizer.cpp b/src/common/gbsizer.cpp index 26775f835e..c3b2e137fb 100644 --- a/src/common/gbsizer.cpp +++ b/src/common/gbsizer.cpp @@ -238,6 +238,15 @@ bool wxGridBagSizer::Add( wxGBSizerItem *item ) //--------------------------------------------------------------------------- +wxSize wxGridBagSizer::GetCellSize(int row, int col) const +{ + wxCHECK_MSG( (row < m_rows) && (col < m_cols), + wxDefaultSize, + wxT("Invalid cell.")); + return wxSize( m_colWidths[col], m_rowHeights[row] ); +} + + wxGBPosition wxGridBagSizer::GetItemPosition(wxWindow *window) { wxGBPosition badpos(-1,-1); @@ -456,14 +465,14 @@ wxSize wxGridBagSizer::CalcMin() // Now traverse the heights and widths arrays calcing the totals, including gaps int width = 0; - int ncols = m_colWidths.GetCount(); - for (idx=0; idx < ncols; idx++) - width += m_colWidths[idx] + ( idx == ncols-1 ? 0 : m_hgap ); + m_cols = m_colWidths.GetCount(); + for (idx=0; idx < m_cols; idx++) + width += m_colWidths[idx] + ( idx == m_cols-1 ? 0 : m_hgap ); int height = 0; - int nrows = m_rowHeights.GetCount(); - for (idx=0; idx < nrows; idx++) - height += m_rowHeights[idx] + ( idx == nrows-1 ? 0 : m_vgap ); + m_rows = m_rowHeights.GetCount(); + for (idx=0; idx < m_rows; idx++) + height += m_rowHeights[idx] + ( idx == m_rows-1 ? 0 : m_vgap ); return wxSize(width, height); } @@ -481,17 +490,17 @@ void wxGridBagSizer::RecalcSizes() wxPoint pt( GetPosition() ); wxSize sz( GetSize() ); - int nrows = m_rowHeights.GetCount(); - int ncols = m_colWidths.GetCount(); + m_rows = m_rowHeights.GetCount(); + m_cols = m_colWidths.GetCount(); int idx, width, height; - AdjustForGrowables(sz, minsz, nrows, ncols); + AdjustForGrowables(sz, minsz, m_rows, m_cols); // Find the start positions on the window of the rows and columns wxArrayInt rowpos; - rowpos.Add(0, nrows); + rowpos.Add(0, m_rows); int y = pt.y; - for (idx=0; idx < nrows; idx++) + for (idx=0; idx < m_rows; idx++) { height = m_rowHeights[idx] + m_vgap; rowpos[idx] = y; @@ -499,9 +508,9 @@ void wxGridBagSizer::RecalcSizes() } wxArrayInt colpos; - colpos.Add(0, ncols); + colpos.Add(0, m_cols); int x = pt.x; - for (idx=0; idx < ncols; idx++) + for (idx=0; idx < m_cols; idx++) { width = m_colWidths[idx] + m_hgap; colpos[idx] = x; -- 2.45.2