From: Vadim Zeitlin <vadim@wxwidgets.org> Date: Sat, 26 Feb 2000 21:00:07 +0000 (+0000) Subject: wxGrid::AutoSize() added X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/57c086ef99ddc150d3df4df6b2be16cb644c6cb8 wxGrid::AutoSize() added git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6306 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/generic/grid.h b/include/wx/generic/grid.h index 743cd7aae5..06345817af 100644 --- a/include/wx/generic/grid.h +++ b/include/wx/generic/grid.h @@ -1080,6 +1080,12 @@ public: // auto size all columns (very ineffective for big grids!) void AutoSizeColumns( bool setAsMin = TRUE ); + void AutoSizeRows( bool setAsMin = TRUE ); + + // auto size the grid, that is make the columns/rows of the "right" size + // and also set the grid size to just fit its contents + void AutoSize(); + // column won't be resized to be lesser width - this must be called during // the grid creation because it won't resize the column if it's already // narrower than the minimal width diff --git a/samples/newgrid/griddemo.cpp b/samples/newgrid/griddemo.cpp index 367064076f..345f1ad8ec 100644 --- a/samples/newgrid/griddemo.cpp +++ b/samples/newgrid/griddemo.cpp @@ -1003,12 +1003,7 @@ BugsGridFrame::BugsGridFrame() grid->SetColAttr(Col_Priority, attrRangeEditor); grid->SetColAttr(Col_Severity, attrCombo); - grid->AutoSizeColumns(); + grid->AutoSize(); -#if defined __WXMOTIF__ - // MB: the grid isn't getting a sensible default size under wxMotif - int cw, ch; - GetClientSize( &cw, &ch ); - grid->SetSize( cw, ch ); -#endif + Fit(); } diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 15044b39d8..9bf212b8e0 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -6851,6 +6851,10 @@ int wxGrid::GetColMinimalWidth(int col) const return obj ? (int)obj : WXGRID_MIN_COL_WIDTH; } +// ---------------------------------------------------------------------------- +// auto sizing +// ---------------------------------------------------------------------------- + void wxGrid::AutoSizeColumn( int col, bool setAsMin ) { wxClientDC dc(m_gridWin); @@ -6901,15 +6905,42 @@ void wxGrid::AutoSizeColumn( int col, bool setAsMin ) void wxGrid::AutoSizeColumns( bool setAsMin ) { + int width = m_rowLabelWidth; + for ( int col = 0; col < m_numCols; col++ ) { AutoSizeColumn(col, setAsMin); + + width += GetColWidth(col); } + + // also set the grid size to just fit the columns + SetSize(width, -1); } -// -// ------ cell value accessor functions -// +void wxGrid::AutoSizeRows(bool WXUNUSED(setAsMin)) +{ + int height = m_colLabelHeight; + + for ( int row = 0; row < m_numRows; row++ ) + { + // AutoSizeRow(row, setAsMin) -- TODO + + height += GetRowHeight(row); + } + + SetSize(-1, height); +} + +void wxGrid::AutoSize() +{ + AutoSizeColumns(); + AutoSizeRows(); +} + +// ---------------------------------------------------------------------------- +// cell value accessor functions +// ---------------------------------------------------------------------------- void wxGrid::SetCellValue( int row, int col, const wxString& s ) {