Loosen the assert in IsScrollIncrement().

wxWindowGTK::GTKGetScrollEventType() tries to map GtkAdjustment's delta
to either step or page increment by comparing it with the respective
GtkAdjustment steps. Both of them can be 0, but this code is not
expected to be called in such case.

Yet, in practice, it occasionally is, see e.g.
http://devel.aegisub.org/ticket/979GTKGetScrollEventType (wxWebView is
prone to it as well).

Check for >= 0 instead, to be more robust when faced with unexpected
input from GTK+.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74730 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík 2013-08-30 13:14:50 +00:00
parent 8cf4b0651f
commit 45d66f592c

View File

@ -4601,7 +4601,9 @@ int wxWindowGTK::GetScrollRange( int orient ) const
// difference due to possible inexactness in floating point arithmetic // difference due to possible inexactness in floating point arithmetic
static inline bool IsScrollIncrement(double increment, double x) static inline bool IsScrollIncrement(double increment, double x)
{ {
wxASSERT(increment > 0); wxASSERT(increment >= 0);
if ( increment == 0. )
return false;
const double tolerance = 1.0 / 1024; const double tolerance = 1.0 / 1024;
return fabs(increment - fabs(x)) < tolerance; return fabs(increment - fabs(x)) < tolerance;
} }