]> git.saurik.com Git - wxWidgets.git/commitdiff
Added page up and page down key support.
authorMichael Bedward <mbedward@ozemail.com.au>
Thu, 7 Oct 1999 06:36:41 +0000 (06:36 +0000)
committerMichael Bedward <mbedward@ozemail.com.au>
Thu, 7 Oct 1999 06:36:41 +0000 (06:36 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3862 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/grid.h
src/generic/grid.cpp

index f36a93b26ad8e4084ab59c39c1ae3b10189c8f83..68ca153f980ec65a1fb3d9f652a01625bd8ca4a4 100644 (file)
@@ -475,6 +475,8 @@ class wxGrid : public wxPanel
     bool MoveCursorDown();
     bool MoveCursorLeft();
     bool MoveCursorRight();
+    bool MovePageDown();
+    bool MovePageUp();
     bool MoveCursorUpBlock();
     bool MoveCursorDownBlock();
     bool MoveCursorLeftBlock();
index b6a36fe2db2de692dd8c76896ac18a9774d4419e..c69d2694306574469d6c2e58893905fb3bcfeeb2 100644 (file)
@@ -1860,6 +1860,14 @@ void wxGrid::OnKeyDown( wxKeyEvent& ev )
                 }
                 break;
                 
+            case WXK_PRIOR:
+                MovePageUp();
+                break;
+
+            case WXK_NEXT:
+                MovePageDown();
+                break;
+                
             default:
                 // now try the cell edit control
                 //
@@ -2363,6 +2371,54 @@ bool wxGrid::MoveCursorRight()
     return FALSE;
 }
 
+bool wxGrid::MovePageUp()
+{
+    if ( m_currentCellCoords != wxGridNoCellCoords  &&
+         m_scrollPosY > 0 )
+    {
+        int row = m_currentCellCoords.GetRow();
+        int y = m_rowBottoms[ row ] - m_rowHeights[ row ];
+        while ( row > 0 )
+        {
+            if ( y + m_rowHeights[row-1] > m_bottom ) break;
+            y += m_rowHeights[ --row ];
+        }
+        SetVerticalScrollPos( row );
+
+        SelectCell( row, m_currentCellCoords.GetCol() );
+        return TRUE;
+    }
+    
+    return FALSE;
+}
+
+bool wxGrid::MovePageDown()
+{
+    if ( m_currentCellCoords != wxGridNoCellCoords  &&
+         m_scrollPosY + m_wholeRowsVisible < m_numRows )
+    {
+        if ( m_wholeRowsVisible > 0 )
+        {
+            SetVerticalScrollPos( m_scrollPosY + m_wholeRowsVisible );
+        }
+        else if ( m_scrollPosY < m_numRows - 1 )
+        {
+            SetVerticalScrollPos( m_scrollPosY + 1 );
+        }
+        else
+        {
+            return FALSE;
+        }
+        
+        // m_scrollPosY will have been updated
+        //
+        SelectCell( m_scrollPosY, m_currentCellCoords.GetCol() );
+        return TRUE;
+    }
+    
+    return FALSE;
+}
+
 bool wxGrid::MoveCursorUpBlock()
 {
     if ( m_table &&