]> git.saurik.com Git - wxWidgets.git/commitdiff
Implement wxGetMouseState
authorMichael Wetherell <mike.wetherell@ntlworld.com>
Thu, 15 Jun 2006 18:51:35 +0000 (18:51 +0000)
committerMichael Wetherell <mike.wetherell@ntlworld.com>
Thu, 15 Jun 2006 18:51:35 +0000 (18:51 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39747 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mgl/utils.cpp
src/mgl/window.cpp

index 503914f8a236ad7021a98ee00bccb79157b289a0..c6dad8291a9c999e7e5ebd5d544f167c9f81a281 100644 (file)
@@ -168,7 +168,23 @@ wxPoint wxGetMousePosition()
 wxMouseState wxGetMouseState()
 {
     wxMouseState ms;
-    // TODO
+    int x, y;
+
+    wxGetMousePosition(&x, &y);
+
+    ms.SetX(x);
+    ms.SetY(y);
+
+    extern unsigned long g_buttonState;
+    ms.SetLeftDown(g_buttonState & EVT_LEFTBUT);
+    ms.SetMiddleDown(g_buttonState & EVT_MIDDLEBUT);
+    ms.SetRightDown(g_buttonState & EVT_RIGHTBUT);
+
+    ms.SetControlDown(EVT_isKeyDown(KB_leftCtrl) || EVT_isKeyDown(KB_rightCtrl));
+    ms.SetShiftDown(EVT_isKeyDown(KB_leftShift) || EVT_isKeyDown(KB_rightShift));
+    ms.SetAltDown(EVT_isKeyDown(KB_leftAlt));
+    ms.SetMetaDown(EVT_isKeyDown(KB_rightAlt));
+
     return ms;
 }
 
index d4fc3b24e520c362101ecfc4cf49a9256533a88c..2c2fec1ed3e5dd4b6daf1bec5ebb7d92c4cd8a38 100644 (file)
@@ -73,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
@@ -151,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);
 
@@ -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