X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/318ac890b669982a72c94ec811a135aacb64dc61..67193066b2d16ca36529216f70d093690d7e1123:/src/mgl/window.cpp diff --git a/src/mgl/window.cpp b/src/mgl/window.cpp index 042582eabe..2c2fec1ed3 100644 --- a/src/mgl/window.cpp +++ b/src/mgl/window.cpp @@ -23,27 +23,28 @@ #pragma hdrstop #endif +#include "wx/window.h" + #ifndef WX_PRECOMP - #include "wx/window.h" #include "wx/msgdlg.h" #include "wx/accel.h" - #include "wx/setup.h" #include "wx/dc.h" #include "wx/dcclient.h" #include "wx/utils.h" #include "wx/app.h" #include "wx/panel.h" + #include "wx/intl.h" + #include "wx/log.h" + #include "wx/dcscreen.h" + #include "wx/menu.h" #endif #if wxUSE_DRAG_AND_DROP #include "wx/dnd.h" #endif -#include "wx/log.h" #include "wx/sysopt.h" #include "wx/mgl/private.h" -#include "wx/intl.h" -#include "wx/dcscreen.h" #include "wx/caret.h" #include @@ -72,6 +73,8 @@ static wxWindowMGL *gs_mouseCapture = NULL; // the frame that is currently active (i.e. its child has focus). It is // used to generate wxActivateEvents static wxWindowMGL *gs_activeFrame = NULL; +// track the mouse button state for wxGetMouseState() +unsigned long g_buttonState = 0; // --------------------------------------------------------------------------- // constants @@ -150,6 +153,8 @@ static ibool MGLAPI wxWindowMouseHandler(window_t *wnd, event_t *e) wxPoint orig(win->GetClientAreaOrigin()); wxPoint where; + g_buttonState = e->modifiers; + MGL_wmCoordGlobalToLocal(win->GetHandle(), e->where_x, e->where_y, &where.x, &where.y); @@ -296,25 +301,25 @@ static long wxScanToKeyCode(event_t *event, bool translate) if ( translate ) { + bool numlock = (event->modifiers & EVT_NUMLOCK) != 0; + switch ( EVT_scanCode(event->message) ) { KEY (KB_padMinus, WXK_NUMPAD_SUBTRACT) KEY (KB_padPlus, WXK_NUMPAD_ADD) KEY (KB_padTimes, WXK_NUMPAD_MULTIPLY) KEY (KB_padDivide, WXK_NUMPAD_DIVIDE) - KEY (KB_padCenter, WXK_NUMPAD_SEPARATOR) // ? - KEY (KB_padLeft, WXK_NUMPAD_LEFT) - KEY (KB_padRight, WXK_NUMPAD_RIGHT) - KEY (KB_padUp, WXK_NUMPAD_UP) - KEY (KB_padDown, WXK_NUMPAD_DOWN) - KEY (KB_padInsert, WXK_NUMPAD_INSERT) - KEY (KB_padDelete, WXK_NUMPAD_DELETE) - KEY (KB_padHome, WXK_NUMPAD_HOME) - KEY (KB_padEnd, WXK_NUMPAD_END) - KEY (KB_padPageUp, WXK_NUMPAD_PAGEUP) - //KEY (KB_padPageUp, WXK_NUMPAD_PRIOR) - KEY (KB_padPageDown, WXK_NUMPAD_PAGEDOWN) - //KEY (KB_padPageDown, WXK_NUMPAD_NEXT) + KEY (KB_padCenter, numlock ? WXK_NUMPAD5 : WXK_NUMPAD_SEPARATOR) // ? + KEY (KB_padLeft, numlock ? WXK_NUMPAD4 : WXK_NUMPAD_LEFT) + KEY (KB_padRight, numlock ? WXK_NUMPAD6 : WXK_NUMPAD_RIGHT) + KEY (KB_padUp, numlock ? WXK_NUMPAD8 : WXK_NUMPAD_UP) + KEY (KB_padDown, numlock ? WXK_NUMPAD2 : WXK_NUMPAD_DOWN) + KEY (KB_padInsert, numlock ? WXK_NUMPAD0 : WXK_NUMPAD_INSERT) + KEY (KB_padDelete, numlock ? WXK_DECIMAL : WXK_NUMPAD_DELETE) + KEY (KB_padHome, numlock ? WXK_NUMPAD7 : WXK_NUMPAD_HOME) + KEY (KB_padEnd, numlock ? WXK_NUMPAD1 : WXK_NUMPAD_END) + KEY (KB_padPageUp, numlock ? WXK_NUMPAD9 : WXK_NUMPAD_PAGEUP) + KEY (KB_padPageDown, numlock ? WXK_NUMPAD3 : WXK_NUMPAD_PAGEDOWN) KEY (KB_1, '1') KEY (KB_2, '2') KEY (KB_3, '3') @@ -1097,7 +1102,6 @@ void wxWindowMGL::Clear() dc.Clear(); } -#include "wx/menu.h" void wxWindowMGL::Refresh(bool eraseBack, const wxRect *rect) { if ( m_eraseBackground == -1 ) @@ -1153,7 +1157,7 @@ void wxWindowMGL::HandlePaint(MGLDevCtx *dc) { dc->setColorRGB(255,0,255); dc->fillRect(-1000,-1000,2000,2000); - wxUsleep(50); + wxMilliSleep(50); } #endif