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 )
 {