applied SF patch #846738 mousewheel support

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24641 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Gilles Depeyrot 2003-11-23 12:06:18 +00:00
parent f148f2bac3
commit de127c699b
2 changed files with 68 additions and 0 deletions

View File

@ -97,6 +97,7 @@ static const EventTypeSpec eventList[] =
{ kEventClassMouse , kEventMouseDown } ,
{ kEventClassMouse , kEventMouseUp } ,
{ kEventClassMouse , kEventMouseWheelMoved } ,
{ kEventClassMouse , kEventMouseMoved } ,
{ kEventClassMouse , kEventMouseDragged } ,
@ -295,6 +296,39 @@ pascal OSStatus MouseEventHandler( EventHandlerCallRef handler , EventRef event
toplevelWindow->MacFireMouseEvent( nullEvent , point.h , point.v , modifiers , EventTimeToTicks( GetEventTime( event ) ) ) ;
result = noErr ;
break ;
case kEventMouseWheelMoved :
{
//bClearTooltip = false;
EventMouseWheelAxis axis = kEventMouseWheelAxisY;
SInt32 delta = 0;
Point mouseLoc = {0, 0};
if (::GetEventParameter(event, kEventParamMouseWheelAxis, typeMouseWheelAxis,
NULL, sizeof(EventMouseWheelAxis), NULL, &axis) == noErr &&
::GetEventParameter(event, kEventParamMouseWheelDelta, typeLongInteger,
NULL, sizeof(SInt32), NULL, &delta) == noErr &&
::GetEventParameter(event, kEventParamMouseLocation, typeQDPoint,
NULL, sizeof(Point), NULL, &mouseLoc) == noErr)
{
wxMouseEvent wheelEvent(wxEVT_MOUSEWHEEL);
wheelEvent.m_x = mouseLoc.h;
wheelEvent.m_y = mouseLoc.v;
wheelEvent.m_wheelRotation = delta;
wheelEvent.m_wheelDelta = 1;
wheelEvent.m_linesPerAction = 1;
wxWindow* currentMouseWindow = NULL;
wxWindow::MacGetWindowFromPoint(wxPoint(mouseLoc.h, mouseLoc.v), &currentMouseWindow);
if (currentMouseWindow)
{
currentMouseWindow->GetEventHandler()->ProcessEvent(wheelEvent);
result = noErr;
}
}
}
break ;
default :
break ;
}

View File

@ -97,6 +97,7 @@ static const EventTypeSpec eventList[] =
{ kEventClassMouse , kEventMouseDown } ,
{ kEventClassMouse , kEventMouseUp } ,
{ kEventClassMouse , kEventMouseWheelMoved } ,
{ kEventClassMouse , kEventMouseMoved } ,
{ kEventClassMouse , kEventMouseDragged } ,
@ -295,6 +296,39 @@ pascal OSStatus MouseEventHandler( EventHandlerCallRef handler , EventRef event
toplevelWindow->MacFireMouseEvent( nullEvent , point.h , point.v , modifiers , EventTimeToTicks( GetEventTime( event ) ) ) ;
result = noErr ;
break ;
case kEventMouseWheelMoved :
{
//bClearTooltip = false;
EventMouseWheelAxis axis = kEventMouseWheelAxisY;
SInt32 delta = 0;
Point mouseLoc = {0, 0};
if (::GetEventParameter(event, kEventParamMouseWheelAxis, typeMouseWheelAxis,
NULL, sizeof(EventMouseWheelAxis), NULL, &axis) == noErr &&
::GetEventParameter(event, kEventParamMouseWheelDelta, typeLongInteger,
NULL, sizeof(SInt32), NULL, &delta) == noErr &&
::GetEventParameter(event, kEventParamMouseLocation, typeQDPoint,
NULL, sizeof(Point), NULL, &mouseLoc) == noErr)
{
wxMouseEvent wheelEvent(wxEVT_MOUSEWHEEL);
wheelEvent.m_x = mouseLoc.h;
wheelEvent.m_y = mouseLoc.v;
wheelEvent.m_wheelRotation = delta;
wheelEvent.m_wheelDelta = 1;
wheelEvent.m_linesPerAction = 1;
wxWindow* currentMouseWindow = NULL;
wxWindow::MacGetWindowFromPoint(wxPoint(mouseLoc.h, mouseLoc.v), &currentMouseWindow);
if (currentMouseWindow)
{
currentMouseWindow->GetEventHandler()->ProcessEvent(wheelEvent);
result = noErr;
}
}
}
break ;
default :
break ;
}