]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/grid.cpp
added a helper function to show the popup menu allowing to configure the columns...
[wxWidgets.git] / src / generic / grid.cpp
index c516ec9072213177d5a209b01d26bf1bcdc5eb74..7257f41aa048f09c740e071e8c8c48d0b12b48f2 100644 (file)
@@ -4806,7 +4806,7 @@ wxGrid::SetTable(wxGridTableBase *table,
         m_numCols = table->GetNumberCols();
 
         if ( m_useNativeHeader )
-            GetColHeader()->SetColumnCount(m_numCols);
+            GetGridColHeader()->SetColumnCount(m_numCols);
 
         m_table = table;
         m_table->SetView( this );
@@ -5279,7 +5279,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg )
             m_numCols += numCols;
 
             if ( m_useNativeHeader )
-                GetColHeader()->SetColumnCount(m_numCols);
+                GetGridColHeader()->SetColumnCount(m_numCols);
 
             if ( !m_colAt.IsEmpty() )
             {
@@ -5347,7 +5347,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg )
             int oldNumCols = m_numCols;
             m_numCols += numCols;
             if ( m_useNativeHeader )
-                GetColHeader()->SetColumnCount(m_numCols);
+                GetGridColHeader()->SetColumnCount(m_numCols);
 
             if ( !m_colAt.IsEmpty() )
             {
@@ -5402,7 +5402,7 @@ bool wxGrid::Redimension( wxGridTableMessage& msg )
             int numCols = msg.GetCommandInt2();
             m_numCols -= numCols;
             if ( m_useNativeHeader )
-                GetColHeader()->SetColumnCount(m_numCols);
+                GetGridColHeader()->SetColumnCount(m_numCols);
 
             if ( !m_colAt.IsEmpty() )
             {
@@ -5863,7 +5863,7 @@ void wxGrid::UpdateColumnSortingIndicator(int col)
     wxCHECK_RET( col != wxNOT_FOUND, "invalid column index" );
 
     if ( m_useNativeHeader )
-        GetColHeader()->UpdateColumn(col);
+        GetGridColHeader()->UpdateColumn(col);
     else if ( m_nativeColumnLabels )
         m_colWindow->Refresh();
     //else: sorting indicator display not yet implemented in grid version
@@ -6842,19 +6842,36 @@ void wxGrid::DoEndMoveCol(int pos)
     m_dragRowOrCol = -1;
 }
 
-void wxGrid::UpdateColumnRights()
+void wxGrid::RefreshAfterColPosChange()
 {
-    if ( m_colWidths.empty() )
-        return;
-
-    int colRight = 0;
-    for ( int colPos = 0; colPos < m_numCols; colPos++ )
+    // recalculate the column rights as the column positions have changed,
+    // unless we calculate them dynamically because all columns widths are the
+    // same and it's easy to do
+    if ( !m_colWidths.empty() )
     {
-        int colID = GetColAt( colPos );
+        int colRight = 0;
+        for ( int colPos = 0; colPos < m_numCols; colPos++ )
+        {
+            int colID = GetColAt( colPos );
+
+            colRight += m_colWidths[colID];
+            m_colRights[colID] = colRight;
+        }
+    }
 
-        colRight += m_colWidths[colID];
-        m_colRights[colID] = colRight;
+    // and make the changes visible
+    if ( m_useNativeHeader )
+    {
+        if ( m_colAt.empty() )
+            GetGridColHeader()->ResetColumnsOrder();
+        else
+            GetGridColHeader()->SetColumnsOrder(m_colAt);
+    }
+    else
+    {
+        m_colWindow->Refresh();
     }
+    m_gridWin->Refresh();
 }
 
 void wxGrid::SetColPos(int idx, int pos)
@@ -6869,25 +6886,14 @@ void wxGrid::SetColPos(int idx, int pos)
 
     wxHeaderCtrl::MoveColumnInOrderArray(m_colAt, idx, pos);
 
-    // also recalculate the column rights as the column positions have changed
-    UpdateColumnRights();
-
-    // and make the changes visible
-    if ( m_useNativeHeader )
-        GetColHeader()->SetColumnsOrder(m_colAt);
-    else
-        m_colWindow->Refresh();
-    m_gridWin->Refresh();
+    RefreshAfterColPosChange();
 }
 
 void wxGrid::ResetColPos()
 {
     m_colAt.clear();
 
-    if ( m_useNativeHeader )
-        GetColHeader()->ResetColumnsOrder();
-    else
-        m_colWindow->Refresh();
+    RefreshAfterColPosChange();
 }
 
 void wxGrid::EnableDragColMove( bool enable )
@@ -6898,7 +6904,7 @@ void wxGrid::EnableDragColMove( bool enable )
     if ( m_useNativeHeader )
     {
         // update all columns to make them [not] reorderable
-        GetColHeader()->SetColumnCount(m_numCols);
+        GetGridColHeader()->SetColumnCount(m_numCols);
     }
 
     m_canDragColMove = enable;
@@ -8183,7 +8189,7 @@ void wxGrid::UseNativeColHeader(bool native)
     CreateColumnWindow();
 
     if ( m_useNativeHeader )
-        GetColHeader()->SetColumnCount(m_numCols);
+        GetGridColHeader()->SetColumnCount(m_numCols);
     CalcWindowSizes();
 }
 
@@ -9567,7 +9573,7 @@ void wxGrid::SetColLabelValue( int col, const wxString& s )
         {
             if ( m_useNativeHeader )
             {
-                GetColHeader()->UpdateColumn(col);
+                GetGridColHeader()->UpdateColumn(col);
             }
             else
             {
@@ -10408,7 +10414,7 @@ void wxGrid::SetColSize( int col, int width )
     const int diff = width - m_colWidths[col];
     m_colWidths[col] = width;
     if ( m_useNativeHeader )
-        GetColHeader()->UpdateColumn(col);
+        GetGridColHeader()->UpdateColumn(col);
     //else: will be refreshed when the header is redrawn
 
     for ( int colPos = GetColPos(col); colPos < m_numCols; colPos++ )
@@ -10575,7 +10581,7 @@ wxGrid::AutoSizeColOrRow(int colOrRow, bool setAsMin, wxGridDirection direction)
         {
             if ( m_useNativeHeader )
             {
-                GetColHeader()->UpdateColumn(col);
+                GetGridColHeader()->UpdateColumn(col);
             }
             else
             {