X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/88f2a7714a3a6d5b5da9494f3eede8b49f978cca..d21d2e5adf7a5acf3b496a9c4e87eab220bd75d8:/src/mgl/window.cpp?ds=sidebyside diff --git a/src/mgl/window.cpp b/src/mgl/window.cpp index 830b19167d..217508e325 100644 --- a/src/mgl/window.cpp +++ b/src/mgl/window.cpp @@ -118,7 +118,7 @@ static void CaptureScreenshot() // MGL_WM hooks: // --------------------------------------------------------------------------- -static void wxWindowPainter(window_t *wnd, MGLDC *dc) +static void MGLAPI wxWindowPainter(window_t *wnd, MGLDC *dc) { wxWindowMGL *w = (wxWindow*) wnd->userData; @@ -129,9 +129,10 @@ static void wxWindowPainter(window_t *wnd, MGLDC *dc) } } -static ibool wxWindowMouseHandler(window_t *wnd, event_t *e) +static ibool MGLAPI wxWindowMouseHandler(window_t *wnd, event_t *e) { wxWindowMGL *win = (wxWindowMGL*)MGL_wmGetWindowUserData(wnd); + wxPoint orig(win->GetClientAreaOrigin()); wxPoint where; MGL_wmCoordGlobalToLocal(win->GetHandle(), @@ -149,8 +150,8 @@ static ibool wxWindowMouseHandler(window_t *wnd, event_t *e) wxMouseEvent event; event.SetEventObject(win); event.SetTimestamp(e->when); - event.m_x = where.x; - event.m_y = where.y; + event.m_x = where.x - orig.x; + event.m_y = where.y - orig.y; event.m_shiftDown = e->modifiers & EVT_SHIFTKEY; event.m_controlDown = e->modifiers & EVT_CTRLSTATE; event.m_altDown = e->modifiers & EVT_LEFTALT; @@ -194,6 +195,10 @@ static ibool wxWindowMouseHandler(window_t *wnd, event_t *e) e->where_x, e->where_y, &event2.m_x, &event2.m_y); + wxPoint orig(gs_windowUnderMouse->GetClientAreaOrigin()); + event2.m_x -= orig.x; + event2.m_y -= orig.y; + event2.SetEventObject(gs_windowUnderMouse); event2.SetEventType(wxEVT_LEAVE_WINDOW); gs_windowUnderMouse->GetEventHandler()->ProcessEvent(event2); @@ -369,7 +374,7 @@ static long wxAsciiToKeyCode(event_t *event) return (long)EVT_asciiCode(event->message); } -static ibool wxWindowKeybHandler(window_t *wnd, event_t *e) +static ibool MGLAPI wxWindowKeybHandler(window_t *wnd, event_t *e) { wxWindowMGL *win = (wxWindowMGL*)MGL_wmGetWindowUserData(wnd); @@ -469,7 +474,7 @@ void wxWindowMGL::Init() // First of all, make sure window manager is up and running. If it is // not the case, initialize it in default display mode if ( !g_winMng ) - wxTheApp->SetDisplayMode(wxDisplayModeInfo(wxSize(640, 480), 16)); + wxTheApp->SetDisplayMode(wxDisplayModeInfo(640, 480, 16)); // generic: InitBase();