]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/gridsel.cpp
Use GetFont not m_font for GetCharHeight
[wxWidgets.git] / src / generic / gridsel.cpp
index a86edfc4adf569bce4ff731cdc01150d5865fe73..f1d62b07f64764a477ec5f4b0e6734188bb230a9 100644 (file)
 // headers
 // ----------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "gridsel.h"
-#endif
-
 // For compilers that support precompilation, includes "wx/wx.h".
 #include "wx/wxprec.h"
 
@@ -69,7 +65,7 @@ bool wxGridSelection::IsInSelection ( int row, int col )
         {
             wxGridCellCoords& coords = m_cellSelection[n];
             if ( row == coords.GetRow() && col == coords.GetCol() )
-                return TRUE;
+                return true;
         }
     }
 
@@ -83,7 +79,7 @@ bool wxGridSelection::IsInSelection ( int row, int col )
         if ( BlockContainsCell(coords1.GetRow(), coords1.GetCol(),
                                coords2.GetRow(), coords2.GetCol(),
                                row, col ) )
-            return TRUE;
+            return true;
     }
 
     // Now check whether the given cell is
@@ -91,11 +87,11 @@ bool wxGridSelection::IsInSelection ( int row, int col )
     // (unless we are in column selection mode).
     if ( m_selectionMode != wxGrid::wxGridSelectColumns )
     {
-        size_t count = m_rowSelection.GetCount();
+        count = m_rowSelection.GetCount();
         for ( size_t n = 0; n < count; n++ )
         {
             if ( row == m_rowSelection[n] )
-              return TRUE;
+              return true;
         }
     }
 
@@ -104,14 +100,14 @@ bool wxGridSelection::IsInSelection ( int row, int col )
     // (unless we are in row selection mode).
     if ( m_selectionMode != wxGrid::wxGridSelectRows )
     {
-        size_t count = m_colSelection.GetCount();
+        count = m_colSelection.GetCount();
         for ( size_t n = 0; n < count; n++ )
         {
             if ( col == m_colSelection[n] )
-              return TRUE;
+              return true;
         }
     }
-    return FALSE;
+    return false;
 }
 
 // Change the selection mode
@@ -165,7 +161,7 @@ void wxGridSelection::SetSelectionMode(wxGrid::wxGridSelectionModes selmode)
                     m_blockSelectionBottomRight.RemoveAt(n);
                     SelectBlock( topRow, 0,
                                  bottomRow, m_grid->GetNumberCols() - 1,
-                                 FALSE, FALSE, FALSE, FALSE, FALSE );
+                                 false, false, false, false, false );
                 }
             }
             else // selmode == wxGridSelectColumns)
@@ -176,7 +172,7 @@ void wxGridSelection::SetSelectionMode(wxGrid::wxGridSelectionModes selmode)
                     m_blockSelectionBottomRight.RemoveAt(n);
                     SelectBlock( 0, leftCol,
                                  m_grid->GetNumberRows() - 1, rightCol,
-                                 FALSE, FALSE, FALSE, FALSE, FALSE );
+                                 false, false, false, false, false );
                 }
             }
         }
@@ -210,7 +206,7 @@ void wxGridSelection::SelectRow( int row,
 
     // Simplify list of selected blocks (if possible)
     count = m_blockSelectionTopLeft.GetCount();
-    bool done = FALSE;
+    bool done = false;
     for ( n = 0; n < count; n++ )
     {
         wxGridCellCoords& coords1 = m_blockSelectionTopLeft[n];
@@ -233,12 +229,12 @@ void wxGridSelection::SelectRow( int row,
             else if ( coords1.GetRow() == row + 1)
             {
                 coords1.SetRow(row);
-                done = TRUE;
+                done = true;
             }
             else if ( coords2.GetRow() == row - 1)
             {
                 coords2.SetRow(row);
-                done = TRUE;
+                done = true;
             }
         }
     }
@@ -259,10 +255,12 @@ void wxGridSelection::SelectRow( int row,
     }
 
     // Update View:
-    wxRect r = m_grid->BlockToDeviceRect( wxGridCellCoords( row, 0 ),
-                                          wxGridCellCoords( row, m_grid->GetNumberCols() - 1 ) );
     if ( !m_grid->GetBatchCount() )
-        ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+    {
+        wxRect r = m_grid->BlockToDeviceRect( wxGridCellCoords( row, 0 ),
+                                              wxGridCellCoords( row, m_grid->GetNumberCols() - 1 ) );
+        ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+    }
 
     // Send Event
     wxGridRangeSelectEvent gridEvt( m_grid->GetId(),
@@ -270,7 +268,7 @@ void wxGridSelection::SelectRow( int row,
                                     m_grid,
                                     wxGridCellCoords( row, 0 ),
                                     wxGridCellCoords( row, m_grid->GetNumberCols() - 1 ),
-                                    TRUE,
+                                    true,
                                     ControlDown,  ShiftDown,
                                     AltDown, MetaDown );
 
@@ -303,7 +301,7 @@ void wxGridSelection::SelectCol( int col,
 
     // Simplify list of selected blocks (if possible)
     count = m_blockSelectionTopLeft.GetCount();
-    bool done = FALSE;
+    bool done = false;
     for ( n = 0; n < count; n++ )
     {
         wxGridCellCoords& coords1 = m_blockSelectionTopLeft[n];
@@ -326,12 +324,12 @@ void wxGridSelection::SelectCol( int col,
             else if ( coords1.GetCol() == col + 1)
             {
                 coords1.SetCol(col);
-                done = TRUE;
+                done = true;
             }
             else if ( coords2.GetCol() == col - 1)
             {
                 coords2.SetCol(col);
-                done = TRUE;
+                done = true;
             }
         }
     }
@@ -352,10 +350,12 @@ void wxGridSelection::SelectCol( int col,
     }
 
     // Update View:
-    wxRect r = m_grid->BlockToDeviceRect( wxGridCellCoords( 0, col ),
-                                          wxGridCellCoords( m_grid->GetNumberRows() - 1, col ) );
     if ( !m_grid->GetBatchCount() )
-        ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+    {
+        wxRect r = m_grid->BlockToDeviceRect( wxGridCellCoords( 0, col ),
+                                              wxGridCellCoords( m_grid->GetNumberRows() - 1, col ) );
+        ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+    }
 
     // Send Event
     wxGridRangeSelectEvent gridEvt( m_grid->GetId(),
@@ -363,7 +363,7 @@ void wxGridSelection::SelectCol( int col,
                                     m_grid,
                                     wxGridCellCoords( 0, col ),
                                     wxGridCellCoords( m_grid->GetNumberRows() - 1, col ),
-                                    TRUE,
+                                    true,
                                     ControlDown,  ShiftDown,
                                     AltDown, MetaDown );
 
@@ -439,14 +439,17 @@ void wxGridSelection::SelectBlock( int topRow, int leftCol,
                                coords2.GetRow(), coords2.GetCol(),
                                topRow, leftCol, bottomRow, rightCol ) )
         {
-          case 1:
-            return;
-          case -1:
-            m_blockSelectionTopLeft.RemoveAt(n);
-            m_blockSelectionBottomRight.RemoveAt(n);
-            n--; count--;
-          default:
-            ;
+            case 1:
+                return;
+
+            case -1:
+                m_blockSelectionTopLeft.RemoveAt(n);
+                m_blockSelectionBottomRight.RemoveAt(n);
+                n--; count--;
+                break;
+
+            default:
+                break;
         }
     }
 
@@ -461,13 +464,16 @@ void wxGridSelection::SelectBlock( int topRow, int leftCol,
                                    m_rowSelection[n], m_grid->GetNumberCols()-1,
                                    topRow, leftCol, bottomRow, rightCol ) )
             {
-              case 1:
-                return;
-              case -1:
-                m_rowSelection.RemoveAt(n);
-                n--; count--;
-              default:
-                ;
+                case 1:
+                    return;
+
+                case -1:
+                    m_rowSelection.RemoveAt(n);
+                    n--; count--;
+                    break;
+
+                default:
+                    break;
             }
         }
     }
@@ -480,13 +486,16 @@ void wxGridSelection::SelectBlock( int topRow, int leftCol,
                                    m_grid->GetNumberRows()-1, m_colSelection[n],
                                    topRow, leftCol, bottomRow, rightCol ) )
             {
-              case 1:
-                return;
-              case -1:
-                m_colSelection.RemoveAt(n);
-                n--; count--;
-              default:
-                ;
+                case 1:
+                    return;
+
+                case -1:
+                    m_colSelection.RemoveAt(n);
+                    n--; count--;
+                    break;
+
+                default:
+                    break;
             }
         }
     }
@@ -494,10 +503,12 @@ void wxGridSelection::SelectBlock( int topRow, int leftCol,
     m_blockSelectionBottomRight.Add( wxGridCellCoords( bottomRow, rightCol ) );
 
     // Update View:
-    wxRect r = m_grid->BlockToDeviceRect( wxGridCellCoords( topRow, leftCol ),
-                                          wxGridCellCoords( bottomRow, rightCol ) );
     if ( !m_grid->GetBatchCount() )
-        ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+    {
+        wxRect r = m_grid->BlockToDeviceRect( wxGridCellCoords( topRow, leftCol ),
+                                              wxGridCellCoords( bottomRow, rightCol ) );
+        ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+    }
 
     // Send Event, if not disabled.
     if ( sendEvent )
@@ -507,7 +518,7 @@ void wxGridSelection::SelectBlock( int topRow, int leftCol,
                                         m_grid,
                                         wxGridCellCoords( topRow, leftCol ),
                                         wxGridCellCoords( bottomRow, rightCol ),
-                                        TRUE,
+                                        true,
                                         ControlDown, ShiftDown,
                                         AltDown, MetaDown );
         m_grid->GetEventHandler()->ProcessEvent(gridEvt);
@@ -536,10 +547,12 @@ void wxGridSelection::SelectCell( int row, int col,
     m_cellSelection.Add( wxGridCellCoords( row, col ) );
 
     // Update View:
-    wxRect r = m_grid->BlockToDeviceRect( wxGridCellCoords( row, col ),
-                                          wxGridCellCoords( row, col ) );
     if ( !m_grid->GetBatchCount() )
-        ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+    {
+        wxRect r = m_grid->BlockToDeviceRect( wxGridCellCoords( row, col ),
+                                              wxGridCellCoords( row, col ) );
+        ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+    }
 
     // Send event
     if (sendEvent)
@@ -549,7 +562,7 @@ void wxGridSelection::SelectCell( int row, int col,
                                         m_grid,
                                         wxGridCellCoords( row, col ),
                                         wxGridCellCoords( row, col ),
-                                        TRUE,
+                                        true,
                                         ControlDown, ShiftDown,
                                         AltDown, MetaDown);
         m_grid->GetEventHandler()->ProcessEvent(gridEvt);
@@ -582,16 +595,16 @@ void wxGridSelection::ToggleCellSelection( int row, int col,
         count = m_cellSelection.GetCount();
         for ( n = 0; n < count; n++ )
         {
-            wxGridCellCoords& coords = m_cellSelection[n];
-            if ( row == coords.GetRow() && col == coords.GetCol() )
+            const wxGridCellCoords& sel = m_cellSelection[n];
+            if ( row == sel.GetRow() && col == sel.GetCol() )
             {
-                wxRect r;
-                r = m_grid->BlockToDeviceRect( m_cellSelection[n],
-                                               m_cellSelection[n] );
+                wxGridCellCoords coords = m_cellSelection[n];
                 m_cellSelection.RemoveAt(n);
-                n--; count--;
                 if ( !m_grid->GetBatchCount() )
-                    ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+                {
+                    wxRect r = m_grid->BlockToDeviceRect( coords, coords );
+                    ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+                }
 
                 // Send event
                 wxGridRangeSelectEvent gridEvt( m_grid->GetId(),
@@ -599,7 +612,7 @@ void wxGridSelection::ToggleCellSelection( int row, int col,
                                                 m_grid,
                                                 wxGridCellCoords( row, col ),
                                                 wxGridCellCoords( row, col ),
-                                                FALSE,
+                                                false,
                                                 ControlDown, ShiftDown,
                                                 AltDown, MetaDown );
                 m_grid->GetEventHandler()->ProcessEvent(gridEvt);
@@ -648,19 +661,19 @@ void wxGridSelection::ToggleCellSelection( int row, int col,
             {
                 if ( topRow < row )
                     SelectBlock( topRow, leftCol, row - 1, rightCol,
-                                FALSE, FALSE, FALSE, FALSE, FALSE );
+                                 false, false, false, false, false );
                 if ( bottomRow > row )
                     SelectBlock( row + 1, leftCol, bottomRow, rightCol,
-                                FALSE, FALSE, FALSE, FALSE, FALSE );
+                                 false, false, false, false, false );
             }
             if ( m_selectionMode != wxGrid::wxGridSelectRows )
             {
                 if ( leftCol < col )
                     SelectBlock( row, leftCol, row, col - 1,
-                                FALSE, FALSE, FALSE, FALSE, FALSE );
+                                 false, false, false, false, false );
                 if ( rightCol > col )
                     SelectBlock( row, col + 1, row, rightCol,
-                                FALSE, FALSE, FALSE, FALSE, FALSE );
+                                 false, false, false, false, false );
             }
         }
     }
@@ -679,11 +692,11 @@ void wxGridSelection::ToggleCellSelection( int row, int col,
                 {
                     if ( col > 0 )
                         SelectBlock( row, 0, row, col - 1,
-                                    FALSE, FALSE, FALSE, FALSE, FALSE );
+                                     false, false, false, false, false );
                     if ( col < m_grid->GetNumberCols() - 1 )
                         SelectBlock( row, col + 1,
                                      row, m_grid->GetNumberCols() - 1,
-                                     FALSE, FALSE, FALSE, FALSE, FALSE );
+                                     false, false, false, false, false );
                 }
             }
         }
@@ -703,11 +716,11 @@ void wxGridSelection::ToggleCellSelection( int row, int col,
                 {
                     if ( row > 0 )
                         SelectBlock( 0, col, row - 1, col,
-                                    FALSE, FALSE, FALSE, FALSE, FALSE );
+                                     false, false, false, false, false );
                     if ( row < m_grid->GetNumberRows() - 1 )
                         SelectBlock( row + 1, col,
                                      m_grid->GetNumberRows() - 1, col,
-                                     FALSE, FALSE, FALSE, FALSE, FALSE );
+                                     false, false, false, false, false );
                 }
             }
         }
@@ -720,16 +733,19 @@ void wxGridSelection::ToggleCellSelection( int row, int col,
     {
       case wxGrid::wxGridSelectCells:
       {
-          r = m_grid->BlockToDeviceRect( wxGridCellCoords( row, col ),
-                                         wxGridCellCoords( row, col ) );
           if ( !m_grid->GetBatchCount() )
-              ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+          {
+              r = m_grid->BlockToDeviceRect( wxGridCellCoords( row, col ),
+                                             wxGridCellCoords( row, col ) );
+              ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+          }
+
           wxGridRangeSelectEvent gridEvt( m_grid->GetId(),
                                           wxEVT_GRID_RANGE_SELECT,
                                           m_grid,
                                           wxGridCellCoords( row, col ),
                                           wxGridCellCoords( row, col ),
-                                          FALSE,
+                                          false,
                                           ControlDown, ShiftDown,
                                           AltDown, MetaDown );
           m_grid->GetEventHandler()->ProcessEvent(gridEvt);
@@ -737,16 +753,19 @@ void wxGridSelection::ToggleCellSelection( int row, int col,
       }
       case wxGrid::wxGridSelectRows:
       {
-          r = m_grid->BlockToDeviceRect( wxGridCellCoords( row, 0 ),
-                                         wxGridCellCoords( row, m_grid->GetNumberCols() - 1 ) );
           if ( !m_grid->GetBatchCount() )
-              ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+          {
+              r = m_grid->BlockToDeviceRect( wxGridCellCoords( row, 0 ),
+                                             wxGridCellCoords( row, m_grid->GetNumberCols() - 1 ) );
+              ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+          }
+
           wxGridRangeSelectEvent gridEvt( m_grid->GetId(),
                                           wxEVT_GRID_RANGE_SELECT,
                                           m_grid,
                                           wxGridCellCoords( row, 0 ),
                                           wxGridCellCoords( row, m_grid->GetNumberCols() - 1 ),
-                                          FALSE,
+                                          false,
                                           ControlDown, ShiftDown,
                                           AltDown, MetaDown );
           m_grid->GetEventHandler()->ProcessEvent(gridEvt);
@@ -754,16 +773,19 @@ void wxGridSelection::ToggleCellSelection( int row, int col,
       }
       case wxGrid::wxGridSelectColumns:
       {
-          r = m_grid->BlockToDeviceRect( wxGridCellCoords( 0, col ),
-                                         wxGridCellCoords( m_grid->GetNumberRows() - 1, col ) );
           if ( !m_grid->GetBatchCount() )
-              ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+          {
+              r = m_grid->BlockToDeviceRect( wxGridCellCoords( 0, col ),
+                                             wxGridCellCoords( m_grid->GetNumberRows() - 1, col ) );
+              ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+          }
+
           wxGridRangeSelectEvent gridEvt( m_grid->GetId(),
                                           wxEVT_GRID_RANGE_SELECT,
                                           m_grid,
                                           wxGridCellCoords( 0, col ),
                                           wxGridCellCoords( m_grid->GetNumberRows() - 1, col ),
-                                          FALSE,
+                                          false,
                                           ControlDown, ShiftDown,
                                           AltDown, MetaDown );
           m_grid->GetEventHandler()->ProcessEvent(gridEvt);
@@ -775,34 +797,44 @@ void wxGridSelection::ToggleCellSelection( int row, int col,
 void wxGridSelection::ClearSelection()
 {
     size_t n;
+    wxRect r;
+    wxGridCellCoords coords1, coords2;
 
     // deselect all invidiual cells and update the screen
     if ( m_selectionMode == wxGrid::wxGridSelectCells )
     {
-
         while( ( n = m_cellSelection.GetCount() ) > 0)
         {
-            wxRect r;
             n--;
-            r = m_grid->BlockToDeviceRect( m_cellSelection[n],
-                                           m_cellSelection[n] );
+            coords1 = m_cellSelection[n];
             m_cellSelection.RemoveAt(n);
             if ( !m_grid->GetBatchCount() )
-                ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+            {
+                r = m_grid->BlockToDeviceRect( coords1, coords1 );
+                ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+#ifdef __WXMAC__
+                ((wxWindow *)m_grid->m_gridWin)->Update();
+#endif
+            }
         }
     }
 
     // deselect all blocks and update the screen
     while( ( n = m_blockSelectionTopLeft.GetCount() ) > 0)
     {
-        wxRect r;
         n--;
-        r = m_grid->BlockToDeviceRect( m_blockSelectionTopLeft[n],
-                                       m_blockSelectionBottomRight[n] );
+        coords1 = m_blockSelectionTopLeft[n];
+        coords2 = m_blockSelectionBottomRight[n];
         m_blockSelectionTopLeft.RemoveAt(n);
         m_blockSelectionBottomRight.RemoveAt(n);
         if ( !m_grid->GetBatchCount() )
-            ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+        {
+            r = m_grid->BlockToDeviceRect( coords1, coords2 );
+            ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+#ifdef __WXMAC__
+            ((wxWindow *)m_grid->m_gridWin)->Update();
+#endif
+        }
     }
 
     // deselect all rows and update the screen
@@ -811,13 +843,17 @@ void wxGridSelection::ClearSelection()
         while( ( n = m_rowSelection.GetCount() ) > 0)
         {
             n--;
-            int & row = m_rowSelection[n];
-            wxRect r;
-            r = m_grid->BlockToDeviceRect( wxGridCellCoords( row, 0 ),
-                                           wxGridCellCoords( row, m_grid->GetNumberCols() - 1 ) );
+            int row = m_rowSelection[n];
             m_rowSelection.RemoveAt(n);
             if ( !m_grid->GetBatchCount() )
-                ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+            {
+                r = m_grid->BlockToDeviceRect( wxGridCellCoords( row, 0 ),
+                                               wxGridCellCoords( row, m_grid->GetNumberCols() - 1 ) );
+                ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+#ifdef __WXMAC__
+                ((wxWindow *)m_grid->m_gridWin)->Update();
+#endif
+            }
         }
     }
 
@@ -827,13 +863,17 @@ void wxGridSelection::ClearSelection()
         while( ( n = m_colSelection.GetCount() ) > 0)
         {
             n--;
-            int & col = m_colSelection[n];
-            wxRect r;
-            r = m_grid->BlockToDeviceRect( wxGridCellCoords( 0, col ),
-                                           wxGridCellCoords( m_grid->GetNumberRows() - 1, col ) );
+            int col = m_colSelection[n];
             m_colSelection.RemoveAt(n);
             if ( !m_grid->GetBatchCount() )
-                ((wxWindow *)m_grid->m_gridWin)->Refresh( FALSE, &r );
+            {
+                r = m_grid->BlockToDeviceRect( wxGridCellCoords( 0, col ),
+                                               wxGridCellCoords( m_grid->GetNumberRows() - 1, col ) );
+                ((wxWindow *)m_grid->m_gridWin)->Refresh( false, &r );
+#ifdef __WXMAC__
+                ((wxWindow *)m_grid->m_gridWin)->Update();
+#endif
+            }
         }
     }
 
@@ -846,7 +886,7 @@ void wxGridSelection::ClearSelection()
                                     wxGridCellCoords( 0, 0 ),
                                     wxGridCellCoords( m_grid->GetNumberRows() - 1,
                                                       m_grid->GetNumberCols() - 1 ),
-                                    FALSE );
+                                    false );
 
     m_grid->GetEventHandler()->ProcessEvent(gridEvt);
 }