From: Michael Wetherell Date: Thu, 15 Jun 2006 13:57:45 +0000 (+0000) Subject: Implement wxGetMouseState X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/0cbc5287be2ff31581757553db319475ff6f515b Implement wxGetMouseState git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39741 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/motif/window.cpp b/src/motif/window.cpp index e23a9c5906..9da919ca55 100644 --- a/src/motif/window.cpp +++ b/src/motif/window.cpp @@ -2526,21 +2526,51 @@ wxWindow* wxFindWindowAtPointer(wxPoint& pt) return wxFindWindowAtPoint(pt); } -// Get the current mouse position. -wxPoint wxGetMousePosition() +void wxGetMouseState(int& rootX, int& rootY, unsigned& maskReturn) { Display *display = wxGlobalDisplay(); Window rootWindow = RootWindowOfScreen (DefaultScreenOfDisplay(display)); Window rootReturn, childReturn; - int rootX, rootY, winX, winY; - unsigned int maskReturn; + int winX, winY; XQueryPointer (display, rootWindow, &rootReturn, &childReturn, &rootX, &rootY, &winX, &winY, &maskReturn); - return wxPoint(rootX, rootY); +} + +// Get the current mouse position. +wxPoint wxGetMousePosition() +{ + int x, y; + unsigned mask; + + wxGetMouseState(x, y, mask); + return wxPoint(x, y); +} + +wxMouseState wxGetMouseState() +{ + wxMouseState ms; + int x, y; + unsigned mask; + + wxGetMouseState(x, y, mask); + + ms.SetX(x); + ms.SetY(y); + + ms.SetLeftDown(mask & Button1Mask); + ms.SetMiddleDown(mask & Button2Mask); + ms.SetRightDown(mask & Button3Mask); + + ms.SetControlDown(mask & ControlMask); + ms.SetShiftDown(mask & ShiftMask); + ms.SetAltDown(mask & Mod1Mask); + ms.SetMetaDown(mask & Mod2Mask); + + return ms; } diff --git a/src/x11/window.cpp b/src/x11/window.cpp index 521c531691..b106def7b6 100644 --- a/src/x11/window.cpp +++ b/src/x11/window.cpp @@ -1626,28 +1626,59 @@ wxWindow* wxFindWindowAtPointer(wxPoint& pt) return wxFindWindowAtPoint(wxGetMousePosition()); } -// Get the current mouse position. -wxPoint wxGetMousePosition() +void wxGetMouseState(int& rootX, int& rootY, unsigned& maskReturn) { #if wxUSE_NANOX /* TODO */ - return wxPoint(0, 0); + rootX = rootY = 0; + maskReturn = 0; #else Display *display = wxGlobalDisplay(); Window rootWindow = RootWindowOfScreen (DefaultScreenOfDisplay(display)); Window rootReturn, childReturn; - int rootX, rootY, winX, winY; - unsigned int maskReturn; + int winX, winY; XQueryPointer (display, rootWindow, &rootReturn, &childReturn, &rootX, &rootY, &winX, &winY, &maskReturn); - return wxPoint(rootX, rootY); #endif } +// Get the current mouse position. +wxPoint wxGetMousePosition() +{ + int x, y; + unsigned mask; + + wxGetMouseState(x, y, mask); + return wxPoint(x, y); +} + +wxMouseState wxGetMouseState() +{ + wxMouseState ms; + int x, y; + unsigned mask; + + wxGetMouseState(x, y, mask); + + ms.SetX(x); + ms.SetY(y); + + ms.SetLeftDown(mask & Button1Mask); + ms.SetMiddleDown(mask & Button2Mask); + ms.SetRightDown(mask & Button3Mask); + + ms.SetControlDown(mask & ControlMask); + ms.SetShiftDown(mask & ShiftMask); + ms.SetAltDown(mask & Mod1Mask); + ms.SetMetaDown(mask & Mod2Mask); + + return ms; +} + // ---------------------------------------------------------------------------- // wxNoOptimize: switch off size optimization