]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/window.cpp
Commit patch [ 1559950 ] fix mem leaks in wx{Dir|File}Dialog
[wxWidgets.git] / src / motif / window.cpp
index cea79f107fe2c1d6706ee468404ac3d712265303..720aff4a408ade01a8f10b1d302fc588e8a02b1f 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        src/motif/windows.cpp
+// Name:        src/motif/window.cpp
 // Purpose:     wxWindow
 // Author:      Julian Smart
 // Modified by:
 #define XtScreen XTSCREEN
 #endif
 
-#include "wx/menu.h"
-#include "wx/dc.h"
-#include "wx/dcclient.h"
-#include "wx/utils.h"
-#include "wx/app.h"
-#include "wx/layout.h"
-#include "wx/button.h"
-#include "wx/settings.h"
-#include "wx/frame.h"
-#include "wx/scrolwin.h"
-#include "wx/module.h"
-#include "wx/menuitem.h"
-#include "wx/log.h"
+#ifndef WX_PRECOMP
+    #include "wx/hash.h"
+    #include "wx/log.h"
+    #include "wx/app.h"
+    #include "wx/utils.h"
+    #include "wx/frame.h"
+    #include "wx/dc.h"
+    #include "wx/dcclient.h"
+    #include "wx/button.h"
+    #include "wx/menu.h"
+    #include "wx/settings.h"
+    #include "wx/scrolwin.h"
+    #include "wx/layout.h"
+    #include "wx/menuitem.h"
+    #include "wx/module.h"
+#endif
+
 #include "wx/evtloop.h"
-#include "wx/hash.h"
 
 #if  wxUSE_DRAG_AND_DROP
     #include "wx/dnd.h"
@@ -62,7 +65,7 @@
 // 2) call DoMoveWindow from DoSetSize, allowing controls to override it
 
 #ifdef __VMS__
-#pragma message disable nosimpint
+    #pragma message disable nosimpint
 #endif
 #include <Xm/Xm.h>
 
@@ -73,7 +76,7 @@
 #include <Xm/Label.h>
 #include <Xm/RowColumn.h>           // for XmMenuPosition
 #ifdef __VMS__
-#pragma message enable nosimpint
+    #pragma message enable nosimpint
 #endif
 
 #include "wx/motif/private.h"
@@ -693,7 +696,7 @@ bool wxWindow::SetCursor(const wxCursor& cursor)
 
     //    wxASSERT_MSG( m_cursor.Ok(),
     //                  wxT("cursor must be valid after call to the base version"));
-    wxCursor* cursor2 = NULL;
+    const wxCursor* cursor2 = NULL;
     if (m_cursor.Ok())
         cursor2 = & m_cursor;
     else
@@ -1247,6 +1250,7 @@ void wxWindow::DoSetSizeIntr(int x, int y, int width, int height,
 {
     // A bit of optimization to help sort out the flickers.
     int oldX = -1, oldY = -1, oldW = -1, oldH = -1;
+
     if( !fromCtor )
     {
         GetSize(& oldW, & oldH);
@@ -2377,7 +2381,7 @@ bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win,
 
 #define YAllocColor XAllocColor
 XColor g_itemColors[5];
-int wxComputeColours (Display *display, wxColour * back, wxColour * fore)
+int wxComputeColours (Display *display, const wxColour * back, const wxColour * fore)
 {
     int result;
     static XmColorProc colorProc;
@@ -2522,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 & Mod3Mask);
+    ms.SetMetaDown(mask & Mod1Mask);
+
+    return ms;
 }