- const int value = m_scrollBar->value();
- const int pageStep = m_scrollBar->pageStep();
- m_scrollBar->setValue(value - numSteps * pageStep);
+ int numPixels;
+ if (!event->pixelDelta().isNull()) {
+ numPixels = event->pixelDelta().y();
+ } else {
+ const int numDegrees = event->angleDelta().y() / 8;
+ const int numSteps = qApp->wheelScrollLines() * numDegrees / 15;
+ numPixels = numSteps * m_scrollBar->pageStep() / 12;
+ }
+ int value = m_scrollBar->value();
+ if (event->modifiers().testFlag(Qt::ShiftModifier)) {
+ const int scrollingDirection = numPixels > 0 ? 1 : -1;
+ value -= m_scrollBar->pageStep() * scrollingDirection;
+ } else {
+ value -= numPixels;
+ }
+ m_scrollBar->setValue(value);