diff -ur ooo_SRC680_m181_src.orig/vcl/aqua/inc/aquavclevents.hxx ooo_SRC680_m181_src/vcl/aqua/inc/aquavclevents.hxx
--- ooo_SRC680_m181_src.orig/vcl/aqua/inc/aquavclevents.hxx	2006-08-08 16:47:54.000000000 +0200
+++ ooo_SRC680_m181_src/vcl/aqua/inc/aquavclevents.hxx	2006-08-08 17:16:35.000000000 +0200
@@ -32,6 +32,7 @@
 const EventTypeSpec cWindowPaintEvent = { kEventClassWindow, kEventWindowPaint }; 
 const EventTypeSpec cWindowDrawContentEvent = { kEventClassWindow, kEventWindowDrawContent }; 
 const EventTypeSpec cMouseUpDownEvent[] = { { kEventClassMouse, kEventMouseDown }, { kEventClassMouse, kEventMouseUp } };
+const EventTypeSpec cMouseWheelMovedEvent = { kEventClassMouse, kEventMouseWheelMoved };
 const EventTypeSpec cWindowResizeStarted = { kEventClassWindow, kEventWindowResizeStarted };
 const EventTypeSpec cWindowResizeCompleted = { kEventClassWindow, kEventWindowResizeCompleted };
 
diff -ur ooo_SRC680_m181_src.orig/vcl/aqua/source/window/salframe.cxx ooo_SRC680_m181_src/vcl/aqua/source/window/salframe.cxx
--- ooo_SRC680_m181_src.orig/vcl/aqua/source/window/salframe.cxx	2006-08-08 16:47:55.000000000 +0200
+++ ooo_SRC680_m181_src/vcl/aqua/source/window/salframe.cxx	2006-08-08 21:33:52.000000000 +0200
@@ -1090,8 +1090,6 @@
 {
     BOOST_ASSERT(GetEventClass(inEvent) == kEventClassMouse && (GetEventKind(inEvent) == kEventMouseDown || GetEventKind(inEvent) == kEventMouseUp) && "Mouse up or mouse down events expected");
 
-    //fprintf(stderr, "received Mouse up/down event\n");
-    
     ImplSalYieldMutexAcquire();
 
     AquaSalFrame* pSalFrame = reinterpret_cast<AquaSalFrame*>(inUserData);
@@ -1158,6 +1156,78 @@
     return eventNotHandledErr;
 }
 
+OSStatus HandleMouseWheelMovedEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void* inUserData)
+{
+    BOOST_ASSERT(GetEventClass(inEvent) == kEventClassMouse && GetEventKind(inEvent) == kEventMouseWheelMoved && "Mouse wheel moved event expected");
+
+    fprintf(stderr, "PJ: WheelMoved event received.\n");
+
+    ImplSalYieldMutexAcquire();
+
+    AquaSalFrame* pSalFrame = reinterpret_cast<AquaSalFrame*>(inUserData);
+ 
+    // use window bounds to convert from screen to window coordinates
+    Rect bounds;
+    GetWindowBounds( pSalFrame->mrWindow, kWindowContentRgn, &bounds );
+
+    // get mouse coordinates in screen space
+    MacOSPoint aPt;
+    GetEventParameter(inEvent, kEventParamMouseLocation, typeQDPoint, NULL, sizeof(aPt), NULL, &aPt);
+
+    SalWheelMouseEvent aWheelEvt;
+    aWheelEvt.mnX = aPt.h - bounds.left;
+    aWheelEvt.mnY = aPt.v - bounds.top;
+    
+    aWheelEvt.mnCode = 0;
+    aWheelEvt.mnTime = static_cast<ULONG>(GetEventTime(inEvent) * 1000); 
+
+    // Which modifier keys pressed?
+    UInt32 modifierKeys;
+    GetEventParameter(inEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(modifierKeys), NULL, &modifierKeys);
+ 
+    if (modifierKeys & shiftKey)
+        aWheelEvt.mnCode |= KEY_SHIFT;
+    if (modifierKeys & controlKey)
+        aWheelEvt.mnCode |= KEY_MOD1;
+    if (modifierKeys & optionKey)
+        aWheelEvt.mnCode |= KEY_MOD2;
+
+    EventMouseWheelAxis wheelAxis; // kEventMouseWheelAxisX or kEventMouseWheelAxisY
+    SInt32 wheelDelta;
+    GetEventParameter(inEvent, kEventParamMouseWheelAxis, typeMouseWheelAxis, NULL, sizeof(wheelAxis), NULL, &wheelAxis);
+
+    if ( wheelAxis == kEventMouseWheelAxisX )
+        aWheelEvt.mbHorz = TRUE;
+    else
+        aWheelEvt.mbHorz = FALSE;
+
+    GetEventParameter(inEvent, kEventParamMouseWheelDelta, typeLongInteger, NULL, sizeof(wheelDelta), NULL, &wheelDelta);
+
+    static ULONG nLines = 0;
+    if( ! nLines )
+    {
+        char* pEnv = getenv( "SAL_WHEELLINES" );
+        nLines = pEnv ? atoi( pEnv ) : 3;
+        if( nLines > 10 )
+            nLines = SAL_WHEELMOUSE_EVENT_PAGESCROLL;
+    }
+
+    aWheelEvt.mnScrollLines=nLines;
+
+    // FIXME: This all is a bit suspect ;-)
+    aWheelEvt.mnDelta = wheelDelta;
+    aWheelEvt.mnNotchDelta = (wheelDelta>0) ? 1 : -1;
+
+    fprintf(stderr, "PJ: ... %d, %d - %d, %d\n", aWheelEvt.mnX, aWheelEvt.mnY,
+            wheelAxis, aWheelEvt.mnDelta);
+
+    pSalFrame->CallCallback(SALEVENT_WHEELMOUSE, &aWheelEvt);
+
+    ImplSalYieldMutexRelease();
+
+    return noErr;
+}
+
 void DbgPrintModifiers (UInt32 keyModifiers) {
 
       fprintf (stderr, "PJ: ...... keyModifiers: ");
@@ -1594,6 +1664,7 @@
     
     InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleWindowActivatedEvent), 1, &cWindowActivatedEvent);
     InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleMouseUpDownEvent), GetEventTypeCount(cMouseUpDownEvent), cMouseUpDownEvent);
+    InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleMouseWheelMovedEvent), 1, &cMouseWheelMovedEvent);
     InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleWindowResizeStarted), 1, &cWindowResizeStarted);
     InstallAndRegisterEventHandler(NewEventHandlerUPP(HandleWindowResizeCompleted), 1, &cWindowResizeCompleted);
 
