a tentatively better fix for the problem of patch 1456060: don't use m_linesPerPage directly as it's initialized on demand by GetCountPerPage(); also removed some stray tabs

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38749 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-04-16 00:48:34 +00:00
parent 55d452c6f9
commit cf76cd4eba

View File

@@ -3259,7 +3259,11 @@ void wxListMainWindow::OnChar( wxKeyEvent &event )
return; return;
} }
switch (event.GetKeyCode()) // don't use m_linesPerPage directly as it might not be computed yet
const int pageSize = GetCountPerPage();
wxCHECK_RET( pageSize, _T("should have non zero page size") );
switch ( event.GetKeyCode() )
{ {
case WXK_UP: case WXK_UP:
if ( m_current > 0 ) if ( m_current > 0 )
@@ -3283,11 +3287,8 @@ void wxListMainWindow::OnChar( wxKeyEvent &event )
case WXK_PAGEUP: case WXK_PAGEUP:
{ {
// we get a floating point exception without this int steps = InReportView() ? pageSize - 1
if (m_linesPerPage == 0) : m_current % pageSize;
m_linesPerPage = 1;
int steps = InReportView() ? m_linesPerPage - 1 : m_current % m_linesPerPage;
int index = m_current - steps; int index = m_current - steps;
if (index < 0) if (index < 0)
@@ -3299,13 +3300,9 @@ void wxListMainWindow::OnChar( wxKeyEvent &event )
case WXK_PAGEDOWN: case WXK_PAGEDOWN:
{ {
// we get a floating point exception without this
if (m_linesPerPage == 0)
m_linesPerPage = 1;
int steps = InReportView() int steps = InReportView()
? m_linesPerPage - 1 ? pageSize - 1
: m_linesPerPage - (m_current % m_linesPerPage) - 1; : pageSize - (m_current % pageSize) - 1;
size_t index = m_current + steps; size_t index = m_current + steps;
size_t count = GetItemCount(); size_t count = GetItemCount();
@@ -3319,7 +3316,7 @@ void wxListMainWindow::OnChar( wxKeyEvent &event )
case WXK_LEFT: case WXK_LEFT:
if ( !InReportView() ) if ( !InReportView() )
{ {
int index = m_current - m_linesPerPage; int index = m_current - pageSize;
if (index < 0) if (index < 0)
index = 0; index = 0;
@@ -3330,7 +3327,7 @@ void wxListMainWindow::OnChar( wxKeyEvent &event )
case WXK_RIGHT: case WXK_RIGHT:
if ( !InReportView() ) if ( !InReportView() )
{ {
size_t index = m_current + m_linesPerPage; size_t index = m_current + pageSize;
size_t count = GetItemCount(); size_t count = GetItemCount();
if ( index >= count ) if ( index >= count )
@@ -4619,8 +4616,9 @@ void wxListMainWindow::OnScroll(wxScrollWinEvent& event)
GetVirtualSize(&vw, &vh); GetVirtualSize(&vw, &vh);
GetClientSize(&cw, &ch); GetClientSize(&cw, &ch);
if( event.GetOrientation() == wxVERTICAL && ch >= vh) if ( event.GetOrientation() == wxVERTICAL && ch >= vh )
return; return;
// update our idea of which lines are shown when we redraw the window the // update our idea of which lines are shown when we redraw the window the
// next time // next time
ResetVisibleLinesRange(); ResetVisibleLinesRange();