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:
parent
f148f2bac3
commit
de127c699b
@ -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), ¤tMouseWindow);
|
||||
|
||||
if (currentMouseWindow)
|
||||
{
|
||||
currentMouseWindow->GetEventHandler()->ProcessEvent(wheelEvent);
|
||||
result = noErr;
|
||||
}
|
||||
}
|
||||
}
|
||||
break ;
|
||||
default :
|
||||
break ;
|
||||
}
|
||||
|
@ -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), ¤tMouseWindow);
|
||||
|
||||
if (currentMouseWindow)
|
||||
{
|
||||
currentMouseWindow->GetEventHandler()->ProcessEvent(wheelEvent);
|
||||
result = noErr;
|
||||
}
|
||||
}
|
||||
}
|
||||
break ;
|
||||
default :
|
||||
break ;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user