--- old/src/macosx/classes/sun/lwawt/LWWindowPeer.java 2012-02-10 23:40:24.000000000 +0400 +++ new/src/macosx/classes/sun/lwawt/LWWindowPeer.java 2012-02-10 23:40:23.000000000 +0400 @@ -803,16 +803,20 @@ } Point lp = targetPeer.windowToLocal(x, y, this); + int signum = (int) Math.signum(preciseWheelRotation); + if (wheelRotation == 0 && signum * wheelRotation < 1) { + wheelRotation = signum; + } // TODO: fill "bdata" member of AWTEvent // TODO: screenX/screenY postEvent(new MouseWheelEvent(targetPeer.getTarget(), - MouseEvent.MOUSE_WHEEL, - when, modifiers, - lp.x, lp.y, - 0, 0, /* screenX, Y */ - 0 /* clickCount */, false /* popupTrigger */, - scrollType, scrollAmount, - wheelRotation, preciseWheelRotation)); + MouseEvent.MOUSE_WHEEL, + when, modifiers, + lp.x, lp.y, + 0, 0, /* screenX, Y */ + 0 /* clickCount */, false /* popupTrigger */, + scrollType, scrollAmount, + wheelRotation, preciseWheelRotation)); } /*