diff -r dee5afe5301f -r 3f74d0d4af4c src/gui/widgets/qscrollbar.cpp --- a/src/gui/widgets/qscrollbar.cpp Mon Mar 15 12:43:09 2010 +0200 +++ b/src/gui/widgets/qscrollbar.cpp Thu Apr 08 14:19:33 2010 +0300 @@ -521,6 +521,24 @@ if (const QHoverEvent *he = static_cast(event)) d_func()->updateHoverControl(he->pos()); break; +#ifndef QT_NO_WHEELEVENT + case QEvent::Wheel: { + // override wheel event without adding virtual function override + QWheelEvent *ev = static_cast(event); + int delta = ev->delta(); + // scrollbar is a special case - in vertical mode it reaches minimum + // value in the upper position, however QSlider's minimum value is on + // the bottom. So we need to invert a value, but since the scrollbar is + // inverted by default, we need to inverse the delta value for the + // horizontal orientation. + if (ev->orientation() == Qt::Horizontal) + delta = -delta; + Q_D(QScrollBar); + if (d->scrollByDelta(ev->orientation(), ev->modifiers(), delta)) + event->accept(); + return true; + } +#endif default: break; }