]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed refresh problem due to rounding errors
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 4 Feb 2000 14:57:09 +0000 (14:57 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 4 Feb 2000 14:57:09 +0000 (14:57 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5835 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/newgrid/griddemo.cpp
src/generic/grid.cpp

index e50636f2bd64bc04c86e66a236f95738b41a8e11..e7503bc6e0f5860dfa1aff1d4920ef75f17b91a8 100644 (file)
@@ -38,7 +38,7 @@ bool GridApp::OnInit()
 {
     GridFrame *frame = new GridFrame;
     frame->Show( TRUE );
 {
     GridFrame *frame = new GridFrame;
     frame->Show( TRUE );
-    
+
     return TRUE;
 }
 
     return TRUE;
 }
 
@@ -46,21 +46,21 @@ bool GridApp::OnInit()
 
 BEGIN_EVENT_TABLE( GridFrame, wxFrame )
     EVT_MENU( ID_TOGGLEROWLABELS,  GridFrame::ToggleRowLabels )
 
 BEGIN_EVENT_TABLE( GridFrame, wxFrame )
     EVT_MENU( ID_TOGGLEROWLABELS,  GridFrame::ToggleRowLabels )
-    EVT_MENU( ID_TOGGLECOLLABELS,  GridFrame::ToggleColLabels )    
+    EVT_MENU( ID_TOGGLECOLLABELS,  GridFrame::ToggleColLabels )
     EVT_MENU( ID_TOGGLEEDIT, GridFrame::ToggleEditing )
     EVT_MENU( ID_TOGGLEEDIT, GridFrame::ToggleEditing )
-    EVT_MENU( ID_SETLABELCOLOUR, GridFrame::SetLabelColour )    
-    EVT_MENU( ID_SETLABELTEXTCOLOUR, GridFrame::SetLabelTextColour )    
-    EVT_MENU( ID_ROWLABELHORIZALIGN, GridFrame::SetRowLabelHorizAlignment )    
-    EVT_MENU( ID_ROWLABELVERTALIGN, GridFrame::SetRowLabelVertAlignment )    
-    EVT_MENU( ID_COLLABELHORIZALIGN, GridFrame::SetColLabelHorizAlignment )    
-    EVT_MENU( ID_COLLABELVERTALIGN, GridFrame::SetColLabelVertAlignment )    
+    EVT_MENU( ID_SETLABELCOLOUR, GridFrame::SetLabelColour )
+    EVT_MENU( ID_SETLABELTEXTCOLOUR, GridFrame::SetLabelTextColour )
+    EVT_MENU( ID_ROWLABELHORIZALIGN, GridFrame::SetRowLabelHorizAlignment )
+    EVT_MENU( ID_ROWLABELVERTALIGN, GridFrame::SetRowLabelVertAlignment )
+    EVT_MENU( ID_COLLABELHORIZALIGN, GridFrame::SetColLabelHorizAlignment )
+    EVT_MENU( ID_COLLABELVERTALIGN, GridFrame::SetColLabelVertAlignment )
     EVT_MENU( ID_GRIDLINECOLOUR, GridFrame::SetGridLineColour )
     EVT_MENU( ID_INSERTROW, GridFrame::InsertRow )
     EVT_MENU( ID_INSERTCOL, GridFrame::InsertCol )
     EVT_MENU( ID_DELETEROW, GridFrame::DeleteSelectedRows )
     EVT_MENU( ID_DELETECOL, GridFrame::DeleteSelectedCols )
     EVT_MENU( ID_CLEARGRID, GridFrame::ClearGrid )
     EVT_MENU( ID_GRIDLINECOLOUR, GridFrame::SetGridLineColour )
     EVT_MENU( ID_INSERTROW, GridFrame::InsertRow )
     EVT_MENU( ID_INSERTCOL, GridFrame::InsertCol )
     EVT_MENU( ID_DELETEROW, GridFrame::DeleteSelectedRows )
     EVT_MENU( ID_DELETECOL, GridFrame::DeleteSelectedCols )
     EVT_MENU( ID_CLEARGRID, GridFrame::ClearGrid )
-    
+
     EVT_MENU( ID_ABOUT, GridFrame::About )
     EVT_MENU( wxID_EXIT, GridFrame::OnQuit )
 
     EVT_MENU( ID_ABOUT, GridFrame::About )
     EVT_MENU( wxID_EXIT, GridFrame::OnQuit )
 
@@ -71,10 +71,10 @@ BEGIN_EVENT_TABLE( GridFrame, wxFrame )
     EVT_GRID_SELECT_CELL( GridFrame::OnSelectCell )
     EVT_GRID_RANGE_SELECT( GridFrame::OnRangeSelected )
     EVT_GRID_CELL_CHANGE( GridFrame::OnCellValueChanged )
     EVT_GRID_SELECT_CELL( GridFrame::OnSelectCell )
     EVT_GRID_RANGE_SELECT( GridFrame::OnRangeSelected )
     EVT_GRID_CELL_CHANGE( GridFrame::OnCellValueChanged )
-    
+
 END_EVENT_TABLE()
 
 END_EVENT_TABLE()
 
-    
+
 GridFrame::GridFrame()
         : wxFrame( (wxFrame *)NULL, -1, "wxWindows grid class demo",
                    wxDefaultPosition,
 GridFrame::GridFrame()
         : wxFrame( (wxFrame *)NULL, -1, "wxWindows grid class demo",
                    wxDefaultPosition,
@@ -82,17 +82,17 @@ GridFrame::GridFrame()
 {
     int gridW = 600, gridH = 300;
     int logW = gridW, logH = 80;
 {
     int gridW = 600, gridH = 300;
     int logW = gridW, logH = 80;
-    
+
     wxMenu *fileMenu = new wxMenu;
     wxMenu *fileMenu = new wxMenu;
-    fileMenu->Append( wxID_EXIT, "E&xit" );
-    
+    fileMenu->Append( wxID_EXIT, "E&xit\tAlt-X" );
+
     wxMenu *viewMenu = new wxMenu;
     viewMenu->Append( ID_TOGGLEROWLABELS,  "&Row labels", "", TRUE );
     viewMenu->Append( ID_TOGGLECOLLABELS,  "&Col labels", "", TRUE );
     viewMenu->Append( ID_TOGGLEEDIT,  "&Editable", "", TRUE );
     viewMenu->Append( ID_SETLABELCOLOUR, "Set &label colour" );
     viewMenu->Append( ID_SETLABELTEXTCOLOUR, "Set label &text colour" );
     wxMenu *viewMenu = new wxMenu;
     viewMenu->Append( ID_TOGGLEROWLABELS,  "&Row labels", "", TRUE );
     viewMenu->Append( ID_TOGGLECOLLABELS,  "&Col labels", "", TRUE );
     viewMenu->Append( ID_TOGGLEEDIT,  "&Editable", "", TRUE );
     viewMenu->Append( ID_SETLABELCOLOUR, "Set &label colour" );
     viewMenu->Append( ID_SETLABELTEXTCOLOUR, "Set label &text colour" );
-    
+
     wxMenu *rowLabelMenu = new wxMenu;
 
     viewMenu->Append( ID_ROWLABELALIGN, "R&ow label alignment",
     wxMenu *rowLabelMenu = new wxMenu;
 
     viewMenu->Append( ID_ROWLABELALIGN, "R&ow label alignment",
@@ -100,8 +100,8 @@ GridFrame::GridFrame()
                       "Change alignment of row labels" );
 
     rowLabelMenu->Append( ID_ROWLABELHORIZALIGN, "&Horizontal" );
                       "Change alignment of row labels" );
 
     rowLabelMenu->Append( ID_ROWLABELHORIZALIGN, "&Horizontal" );
-    rowLabelMenu->Append( ID_ROWLABELVERTALIGN, "&Vertical" );    
-    
+    rowLabelMenu->Append( ID_ROWLABELVERTALIGN, "&Vertical" );
+
     wxMenu *colLabelMenu = new wxMenu;
 
     viewMenu->Append( ID_COLLABELALIGN, "Col l&abel alignment",
     wxMenu *colLabelMenu = new wxMenu;
 
     viewMenu->Append( ID_COLLABELALIGN, "Col l&abel alignment",
@@ -119,10 +119,10 @@ GridFrame::GridFrame()
     editMenu->Append( ID_DELETEROW, "Delete selected ro&ws" );
     editMenu->Append( ID_DELETECOL, "Delete selected co&ls" );
     editMenu->Append( ID_CLEARGRID, "Cl&ear grid cell contents" );
     editMenu->Append( ID_DELETEROW, "Delete selected ro&ws" );
     editMenu->Append( ID_DELETECOL, "Delete selected co&ls" );
     editMenu->Append( ID_CLEARGRID, "Cl&ear grid cell contents" );
-    
+
     wxMenu *helpMenu = new wxMenu;
     helpMenu->Append( ID_ABOUT, "&About wxGrid demo" );
     wxMenu *helpMenu = new wxMenu;
     helpMenu->Append( ID_ABOUT, "&About wxGrid demo" );
-    
+
     wxMenuBar *menuBar = new wxMenuBar;
     menuBar->Append( fileMenu, "&File" );
     menuBar->Append( viewMenu, "&View" );
     wxMenuBar *menuBar = new wxMenuBar;
     menuBar->Append( fileMenu, "&File" );
     menuBar->Append( viewMenu, "&View" );
@@ -135,14 +135,14 @@ GridFrame::GridFrame()
                        -1,
                        wxPoint( 0, 0 ),
                        wxSize( 400, 300 ) );
                        -1,
                        wxPoint( 0, 0 ),
                        wxSize( 400, 300 ) );
-            
+
     logWin = new wxTextCtrl( this,
                              -1,
                              wxEmptyString,
                              wxPoint( 0, gridH + 20 ),
                              wxSize( logW, logH ),
                              wxTE_MULTILINE );
     logWin = new wxTextCtrl( this,
                              -1,
                              wxEmptyString,
                              wxPoint( 0, gridH + 20 ),
                              wxSize( logW, logH ),
                              wxTE_MULTILINE );
-                             
+
     logger = new wxLogTextCtrl( logWin );
     logger->SetActiveTarget( logger );
     logger->SetTimestamp( NULL );
     logger = new wxLogTextCtrl( logWin );
     logger->SetActiveTarget( logger );
     logger->SetTimestamp( NULL );
@@ -154,7 +154,7 @@ GridFrame::GridFrame()
 
     grid->SetRowSize( 0, 60 );
     grid->SetCellValue( 0, 0, "Ctrl+Home\nwill go to\nthis cell" );
 
     grid->SetRowSize( 0, 60 );
     grid->SetCellValue( 0, 0, "Ctrl+Home\nwill go to\nthis cell" );
-    
+
     grid->SetCellValue( 0, 1, "Blah" );
     grid->SetCellValue( 0, 2, "Blah" );
 
     grid->SetCellValue( 0, 1, "Blah" );
     grid->SetCellValue( 0, 2, "Blah" );
 
@@ -167,17 +167,17 @@ GridFrame::GridFrame()
     topSizer->Add( grid,
                    1,
                    wxEXPAND );
     topSizer->Add( grid,
                    1,
                    wxEXPAND );
-                   
+
     topSizer->Add( logWin,
     topSizer->Add( logWin,
-                   0, 
+                   0,
                    wxEXPAND );
                    wxEXPAND );
-                   
+
     SetAutoLayout( TRUE );
     SetSizer( topSizer );
     SetAutoLayout( TRUE );
     SetSizer( topSizer );
-    
+
     topSizer->Fit( this );
     topSizer->SetSizeHints( this );
     topSizer->Fit( this );
     topSizer->SetSizeHints( this );
-    
+
     Centre();
     SetDefaults();
 }
     Centre();
     SetDefaults();
 }
@@ -261,13 +261,13 @@ void GridFrame::SetRowLabelHorizAlignment( wxCommandEvent& WXUNUSED(ev) )
 {
     int horiz, vert;
     grid->GetRowLabelAlignment( &horiz, &vert );
 {
     int horiz, vert;
     grid->GetRowLabelAlignment( &horiz, &vert );
-    
+
     switch ( horiz )
     {
         case wxLEFT:
             horiz = wxCENTRE;
             break;
     switch ( horiz )
     {
         case wxLEFT:
             horiz = wxCENTRE;
             break;
-            
+
         case wxCENTRE:
             horiz = wxRIGHT;
             break;
         case wxCENTRE:
             horiz = wxRIGHT;
             break;
@@ -284,13 +284,13 @@ void GridFrame::SetRowLabelVertAlignment( wxCommandEvent& WXUNUSED(ev) )
 {
     int horiz, vert;
     grid->GetRowLabelAlignment( &horiz, &vert );
 {
     int horiz, vert;
     grid->GetRowLabelAlignment( &horiz, &vert );
-    
+
     switch ( vert )
     {
         case wxTOP:
             vert = wxCENTRE;
             break;
     switch ( vert )
     {
         case wxTOP:
             vert = wxCENTRE;
             break;
-            
+
         case wxCENTRE:
             vert = wxBOTTOM;
             break;
         case wxCENTRE:
             vert = wxBOTTOM;
             break;
@@ -308,13 +308,13 @@ void GridFrame::SetColLabelHorizAlignment( wxCommandEvent& WXUNUSED(ev) )
 {
     int horiz, vert;
     grid->GetColLabelAlignment( &horiz, &vert );
 {
     int horiz, vert;
     grid->GetColLabelAlignment( &horiz, &vert );
-    
+
     switch ( horiz )
     {
         case wxLEFT:
             horiz = wxCENTRE;
             break;
     switch ( horiz )
     {
         case wxLEFT:
             horiz = wxCENTRE;
             break;
-            
+
         case wxCENTRE:
             horiz = wxRIGHT;
             break;
         case wxCENTRE:
             horiz = wxRIGHT;
             break;
@@ -332,13 +332,13 @@ void GridFrame::SetColLabelVertAlignment( wxCommandEvent& WXUNUSED(ev) )
 {
     int horiz, vert;
     grid->GetColLabelAlignment( &horiz, &vert );
 {
     int horiz, vert;
     grid->GetColLabelAlignment( &horiz, &vert );
-    
+
     switch ( vert )
     {
         case wxTOP:
             vert = wxCENTRE;
             break;
     switch ( vert )
     {
         case wxTOP:
             vert = wxCENTRE;
             break;
-            
+
         case wxCENTRE:
             vert = wxBOTTOM;
             break;
         case wxCENTRE:
             vert = wxBOTTOM;
             break;
@@ -424,7 +424,7 @@ void GridFrame::OnLabelLeftClick( wxGridEvent& ev )
 
     if ( ev.ShiftDown() ) logBuf << " (shift down)";
     wxLogMessage( "%s", logBuf.c_str() );
 
     if ( ev.ShiftDown() ) logBuf << " (shift down)";
     wxLogMessage( "%s", logBuf.c_str() );
-    
+
     // you must call event skip if you want default grid processing
     //
     ev.Skip();
     // you must call event skip if you want default grid processing
     //
     ev.Skip();
@@ -450,7 +450,7 @@ void GridFrame::OnRowSize( wxGridSizeEvent& ev )
     logBuf = "";
     logBuf << "Resized row " << ev.GetRowOrCol();
     wxLogMessage( "%s", logBuf.c_str() );
     logBuf = "";
     logBuf << "Resized row " << ev.GetRowOrCol();
     wxLogMessage( "%s", logBuf.c_str() );
-    
+
     ev.Skip();
 }
 
     ev.Skip();
 }
 
@@ -460,7 +460,7 @@ void GridFrame::OnColSize( wxGridSizeEvent& ev )
     logBuf = "";
     logBuf << "Resized col " << ev.GetRowOrCol();
     wxLogMessage( "%s", logBuf.c_str() );
     logBuf = "";
     logBuf << "Resized col " << ev.GetRowOrCol();
     wxLogMessage( "%s", logBuf.c_str() );
-    
+
     ev.Skip();
 }
 
     ev.Skip();
 }
 
@@ -471,7 +471,7 @@ void GridFrame::OnSelectCell( wxGridEvent& ev )
     logBuf << "Selected cell at row " << ev.GetRow()
            << " col " << ev.GetCol();
     wxLogMessage( "%s", logBuf.c_str() );
     logBuf << "Selected cell at row " << ev.GetRow()
            << " col " << ev.GetCol();
     wxLogMessage( "%s", logBuf.c_str() );
-    
+
     // you must call Skip() if you want the default processing
     // to occur in wxGrid
     ev.Skip();
     // you must call Skip() if you want the default processing
     // to occur in wxGrid
     ev.Skip();
@@ -484,9 +484,9 @@ void GridFrame::OnRangeSelected( wxGridRangeSelectEvent& ev )
             << " col " << ev.GetLeftCol()
             << " to row " << ev.GetBottomRow()
             << " col " << ev.GetRightCol();
             << " col " << ev.GetLeftCol()
             << " to row " << ev.GetBottomRow()
             << " col " << ev.GetRightCol();
-    
+
     wxLogMessage( "%s", logBuf.c_str() );
     wxLogMessage( "%s", logBuf.c_str() );
-    
+
     ev.Skip();
 }
 
     ev.Skip();
 }
 
@@ -494,11 +494,11 @@ void GridFrame::OnCellValueChanged( wxGridEvent& ev )
 {
     logBuf = "";
     logBuf  << "Value changed for cell at"
 {
     logBuf = "";
     logBuf  << "Value changed for cell at"
-            << " row " << ev.GetRow() 
+            << " row " << ev.GetRow()
             << " col " << ev.GetCol();
             << " col " << ev.GetCol();
-    
+
     wxLogMessage( "%s", logBuf.c_str() );
     wxLogMessage( "%s", logBuf.c_str() );
-    
+
     ev.Skip();
 }
 
     ev.Skip();
 }
 
index f98d5cb4bf102f0bc9fcde88fc994dd1171d3015..d81c79ca5265aa7c3f2d2181694a76da1f5c70b0 100644 (file)
@@ -36,7 +36,6 @@
 
 #include "wx/generic/grid.h"
 
 
 #include "wx/generic/grid.h"
 
-
 //////////////////////////////////////////////////////////////////////
 
 wxGridCellCoords wxGridNoCellCoords( -1, -1 );
 //////////////////////////////////////////////////////////////////////
 
 wxGridCellCoords wxGridNoCellCoords( -1, -1 );
@@ -47,6 +46,9 @@ wxRect           wxGridNoCellRect( -1, -1, -1, -1 );
 
 WX_DEFINE_OBJARRAY(wxGridCellCoordsArray)
 
 
 WX_DEFINE_OBJARRAY(wxGridCellCoordsArray)
 
+// scroll line size
+// TODO: fixed so far - make configurable later (and also different for x/y)
+static const size_t GRID_SCROLL_LINE = 10;
 
 //////////////////////////////////////////////////////////////////////
 //
 
 //////////////////////////////////////////////////////////////////////
 //
@@ -139,7 +141,7 @@ wxString wxGridTableBase::GetColLabelValue( int col )
     unsigned int i, n;
     for ( n = 1; ; n++ )
     {
     unsigned int i, n;
     for ( n = 1; ; n++ )
     {
-        s += ('A' + (char)( col%26 ));
+        s += (_T('A') + (wxChar)( col%26 ));
         col = col/26 - 1;
         if ( col < 0 ) break;
     }
         col = col/26 - 1;
         if ( col < 0 ) break;
     }
@@ -639,7 +641,7 @@ void wxGridTextCtrl::OnKeyDown( wxKeyEvent& event )
                     // the other ports can handle a Return key press
                     //
                     event.Skip();
                     // the other ports can handle a Return key press
                     //
                     event.Skip();
-#endif            
+#endif
                 }
             }
             break;
                 }
             }
             break;
@@ -670,7 +672,7 @@ void wxGridTextCtrl::OnKeyDown( wxKeyEvent& event )
 void wxGridTextCtrl::SetStartValue( const wxString& s )
 {
     startValue = s;
 void wxGridTextCtrl::SetStartValue( const wxString& s )
 {
     startValue = s;
-    wxTextCtrl::SetValue( s.c_str() );
+    wxTextCtrl::SetValue(s);
 }
 
 
 }
 
 
@@ -912,7 +914,7 @@ wxGrid::~wxGrid()
 //
 
 void wxGrid::Create()
 //
 
 void wxGrid::Create()
-{    
+{
     int colLblH = WXGRID_DEFAULT_COL_LABEL_HEIGHT;
     int rowLblW = WXGRID_DEFAULT_ROW_LABEL_WIDTH;
 
     int colLblH = WXGRID_DEFAULT_COL_LABEL_HEIGHT;
     int rowLblW = WXGRID_DEFAULT_ROW_LABEL_WIDTH;
 
@@ -1104,8 +1106,8 @@ void wxGrid::CalcDimensions()
         //
         int x, y;
         GetViewStart( &x, &y );
         //
         int x, y;
         GetViewStart( &x, &y );
-        SetScrollbars( 10, 10,
-                       right/10, bottom/10,
+        SetScrollbars( GRID_SCROLL_LINE, GRID_SCROLL_LINE,
+                       right/GRID_SCROLL_LINE, bottom/GRID_SCROLL_LINE,
                        x, y );
     }
 }
                        x, y );
     }
 }
@@ -1864,10 +1866,10 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event )
         m_isDragging = TRUE;
         if ( m_cursorMode == WXGRID_CURSOR_SELECT_CELL )
         {
         m_isDragging = TRUE;
         if ( m_cursorMode == WXGRID_CURSOR_SELECT_CELL )
         {
-           // Hide the edit control, so it
-           // won't interfer with drag-shrinking.
-           if ( IsCellEditControlEnabled() )
-               HideCellEditControl();
+            // Hide the edit control, so it
+            // won't interfer with drag-shrinking.
+            if ( IsCellEditControlEnabled() )
+                HideCellEditControl();
             if ( coords != wxGridNoCellCoords )
             {
                 if ( !IsSelection() )
             if ( coords != wxGridNoCellCoords )
             {
                 if ( !IsSelection() )
@@ -1876,7 +1878,7 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event )
                 }
                 else
                 {
                 }
                 else
                 {
-                   SelectBlock( m_currentCellCoords, coords );
+                    SelectBlock( m_currentCellCoords, coords );
                 }
             }
         }
                 }
             }
         }
@@ -1931,10 +1933,10 @@ void wxGrid::ProcessGridCellMouseEvent( wxMouseEvent& event )
                 }
             }
 
                 }
             }
 
-           // Show the edit control, if it has
-           // been hidden for drag-shrinking.
-           if ( IsCellEditControlEnabled() )
-               ShowCellEditControl();
+            // Show the edit control, if it has
+            // been hidden for drag-shrinking.
+            if ( IsCellEditControlEnabled() )
+                ShowCellEditControl();
 
             m_dragLastPos = -1;
         }
 
             m_dragLastPos = -1;
         }
@@ -3040,7 +3042,7 @@ void wxGrid::ShowCellEditControl()
             rect.SetRight( rect.GetRight() + 2*extra );
             rect.SetBottom( rect.GetBottom() + 2*extra );
 
             rect.SetRight( rect.GetRight() + 2*extra );
             rect.SetBottom( rect.GetBottom() + 2*extra );
 
-            
+
             m_cellEditCtrl->SetSize( rect );
             m_cellEditCtrl->Show( TRUE );
 
             m_cellEditCtrl->SetSize( rect );
             m_cellEditCtrl->Show( TRUE );
 
@@ -3354,6 +3356,11 @@ void wxGrid::MakeCellVisible( int row, int col )
                 h += m_rowHeights[i];
                 ypos -= m_rowHeights[i];
             }
                 h += m_rowHeights[i];
                 ypos -= m_rowHeights[i];
             }
+
+            // we divide it later by GRID_SCROLL_LINE, make sure that we don't
+            // have rounding errors (this is important, because if we do, we
+            // might not scroll at all and some cells won't be redrawn)
+            ypos += GRID_SCROLL_LINE / 2;
         }
 
         if ( left < 0 )
         }
 
         if ( left < 0 )
@@ -3371,12 +3378,15 @@ void wxGrid::MakeCellVisible( int row, int col )
                 w += m_colWidths[i];
                 xpos -= m_colWidths[i];
             }
                 w += m_colWidths[i];
                 xpos -= m_colWidths[i];
             }
+
+            // see comment for ypos above
+            xpos += GRID_SCROLL_LINE / 2;
         }
 
         if ( xpos != -1  ||  ypos != -1 )
         {
         }
 
         if ( xpos != -1  ||  ypos != -1 )
         {
-            if ( xpos != -1 ) xpos = xpos/10;
-            if ( ypos != -1 ) ypos = ypos/10;
+            if ( xpos != -1 ) xpos /= GRID_SCROLL_LINE;
+            if ( ypos != -1 ) ypos /= GRID_SCROLL_LINE;
             Scroll( xpos, ypos );
             AdjustScrollbars();
         }
             Scroll( xpos, ypos );
             AdjustScrollbars();
         }
@@ -4305,41 +4315,41 @@ void wxGrid::SelectBlock( int topRow, int leftCol, int bottomRow, int rightCol )
         leftCol = rightCol;
         rightCol = temp;
     }
         leftCol = rightCol;
         rightCol = temp;
     }
-    
+
     updateTopLeft = m_selectedTopLeft;
     if (m_selectedTopLeft != wxGridCellCoords( topRow, leftCol ) )
     {
         m_selectedTopLeft = wxGridCellCoords( topRow, leftCol );
     updateTopLeft = m_selectedTopLeft;
     if (m_selectedTopLeft != wxGridCellCoords( topRow, leftCol ) )
     {
         m_selectedTopLeft = wxGridCellCoords( topRow, leftCol );
-       if (updateTopLeft == wxGridNoCellCoords)
-       {
-           updateTopLeft = m_selectedTopLeft;
-       }
-       else
-       {
-            if(updateTopLeft.GetRow() > topRow)
-               updateTopLeft.SetRow(topRow);
-           if (updateTopLeft.GetCol() > leftCol)
-             updateTopLeft.SetCol(leftCol);
-       }
-       changed = true;
+        if (updateTopLeft == wxGridNoCellCoords)
+        {
+            updateTopLeft = m_selectedTopLeft;
+        }
+        else
+        {
+             if(updateTopLeft.GetRow() > topRow)
+                updateTopLeft.SetRow(topRow);
+            if (updateTopLeft.GetCol() > leftCol)
+              updateTopLeft.SetCol(leftCol);
+        }
+        changed = true;
     }
 
     updateBottomRight = m_selectedBottomRight;
     if (m_selectedBottomRight != wxGridCellCoords( bottomRow, rightCol ) )
     {
         m_selectedBottomRight = wxGridCellCoords( bottomRow, rightCol );
     }
 
     updateBottomRight = m_selectedBottomRight;
     if (m_selectedBottomRight != wxGridCellCoords( bottomRow, rightCol ) )
     {
         m_selectedBottomRight = wxGridCellCoords( bottomRow, rightCol );
-       if (updateBottomRight == wxGridNoCellCoords)
-       {
-           updateBottomRight = m_selectedBottomRight;
-       }
-       else
-       {
-           if (updateBottomRight.GetRow() < bottomRow)
-               updateBottomRight.SetRow(bottomRow);
-           if (updateBottomRight.GetCol() < rightCol)
-               updateBottomRight.SetCol(rightCol);
-       }
-       changed = true;
+        if (updateBottomRight == wxGridNoCellCoords)
+        {
+            updateBottomRight = m_selectedBottomRight;
+        }
+        else
+        {
+            if (updateBottomRight.GetRow() < bottomRow)
+                updateBottomRight.SetRow(bottomRow);
+            if (updateBottomRight.GetCol() < rightCol)
+                updateBottomRight.SetCol(rightCol);
+        }
+        changed = true;
     }
 
     if (changed)
     }
 
     if (changed)