Applied #10753: WarpPointer() for Mac

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@62115 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2009-09-25 09:57:22 +00:00
parent e37fe232f9
commit 0ed415ed1f

View File

@@ -2527,7 +2527,28 @@ wxWindow *wxGetActiveWindow()
// Coordinates relative to the window
void wxWindowMac::WarpPointer(int x_pos, int y_pos)
{
// We really don't move the mouse programmatically under Mac.
int x = x_pos;
int y = y_pos;
DoClientToScreen(&x, &y);
CGPoint cgpoint = CGPointMake( x, y );
CGWarpMouseCursorPosition( cgpoint );
// At least GTK sends a mouse moved event after WarpMouse
wxMouseEvent event(wxEVT_MOTION);
event.m_x = x_pos;
event.m_y = y_pos;
wxMouseState mState = ::wxGetMouseState();
event.m_altDown = mState.AltDown();
event.m_controlDown = mState.ControlDown();
event.m_leftDown = mState.LeftDown();
event.m_middleDown = mState.MiddleDown();
event.m_rightDown = mState.RightDown();
event.m_metaDown = mState.MetaDown();
event.m_shiftDown = mState.ShiftDown();
event.SetId(GetId());
event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event);
}
void wxWindowMac::OnEraseBackground(wxEraseEvent& event)