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 , kEventMouseDown } ,
|
||||||
{ kEventClassMouse , kEventMouseUp } ,
|
{ kEventClassMouse , kEventMouseUp } ,
|
||||||
|
{ kEventClassMouse , kEventMouseWheelMoved } ,
|
||||||
{ kEventClassMouse , kEventMouseMoved } ,
|
{ kEventClassMouse , kEventMouseMoved } ,
|
||||||
{ kEventClassMouse , kEventMouseDragged } ,
|
{ kEventClassMouse , kEventMouseDragged } ,
|
||||||
|
|
||||||
@ -295,6 +296,39 @@ pascal OSStatus MouseEventHandler( EventHandlerCallRef handler , EventRef event
|
|||||||
toplevelWindow->MacFireMouseEvent( nullEvent , point.h , point.v , modifiers , EventTimeToTicks( GetEventTime( event ) ) ) ;
|
toplevelWindow->MacFireMouseEvent( nullEvent , point.h , point.v , modifiers , EventTimeToTicks( GetEventTime( event ) ) ) ;
|
||||||
result = noErr ;
|
result = noErr ;
|
||||||
break ;
|
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 :
|
default :
|
||||||
break ;
|
break ;
|
||||||
}
|
}
|
||||||
|
@ -97,6 +97,7 @@ static const EventTypeSpec eventList[] =
|
|||||||
|
|
||||||
{ kEventClassMouse , kEventMouseDown } ,
|
{ kEventClassMouse , kEventMouseDown } ,
|
||||||
{ kEventClassMouse , kEventMouseUp } ,
|
{ kEventClassMouse , kEventMouseUp } ,
|
||||||
|
{ kEventClassMouse , kEventMouseWheelMoved } ,
|
||||||
{ kEventClassMouse , kEventMouseMoved } ,
|
{ kEventClassMouse , kEventMouseMoved } ,
|
||||||
{ kEventClassMouse , kEventMouseDragged } ,
|
{ kEventClassMouse , kEventMouseDragged } ,
|
||||||
|
|
||||||
@ -295,6 +296,39 @@ pascal OSStatus MouseEventHandler( EventHandlerCallRef handler , EventRef event
|
|||||||
toplevelWindow->MacFireMouseEvent( nullEvent , point.h , point.v , modifiers , EventTimeToTicks( GetEventTime( event ) ) ) ;
|
toplevelWindow->MacFireMouseEvent( nullEvent , point.h , point.v , modifiers , EventTimeToTicks( GetEventTime( event ) ) ) ;
|
||||||
result = noErr ;
|
result = noErr ;
|
||||||
break ;
|
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 :
|
default :
|
||||||
break ;
|
break ;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user