Avoid division by 0 in generic wxDataViewCtrl scrolling code

Apparently, ScrollTo() can be called when processing keyboard input in
the control before its initial resize and hence before scrolling is
initialized and in this case per-unit scroll units are still 0, so
dividing by them is not a good idea.

Just avoid scrolling in this case.

Closes https://github.com/wxWidgets/wxWidgets/pull/1262
This commit is contained in:
Vadim Zeitlin 2019-03-18 18:18:47 +01:00
parent 7a2d9d0d10
commit 2531780c3b

View File

@ -3110,9 +3110,12 @@ void wxDataViewMainWindow::ScrollTo( int rows, int column )
int x, y; int x, y;
m_owner->GetScrollPixelsPerUnit( &x, &y ); m_owner->GetScrollPixelsPerUnit( &x, &y );
int sy = GetLineStart( rows )/y;
// Take care to not divide by 0 if we're somehow called before scrolling
// parameters are initialized.
int sy = y ? GetLineStart( rows )/y : -1;
int sx = -1; int sx = -1;
if( column != -1 ) if( column != -1 && x )
{ {
wxRect rect = GetClientRect(); wxRect rect = GetClientRect();
int colnum = 0; int colnum = 0;