]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/cursor.cpp
Found bug that skrewed up display wrt horizontal
[wxWidgets.git] / src / msw / cursor.cpp
index e914dff561f34c9f134cba6ed08ab95e866198b7..b715483ccb9dd00ac85014ea89a211138fc9c724 100644 (file)
@@ -37,6 +37,7 @@
     #include "wx/cursor.h"
 #endif
 
+#include "wx/module.h"
 #include "wx/msw/private.h"
 #include "wx/msw/dib.h"
 
 // wxWin macros
 // ----------------------------------------------------------------------------
 
-    IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxCursorBase)
+IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxCursorBase)
+
+// ----------------------------------------------------------------------------
+// globals
+// ----------------------------------------------------------------------------
+
+// Current cursor, in order to hang on to cursor handle when setting the cursor
+// globally
+static wxCursor *gs_globalCursor = NULL;
+
+// ----------------------------------------------------------------------------
+// private classes
+// ----------------------------------------------------------------------------
+
+class wxCursorModule : public wxModule
+{
+public:
+    virtual bool OnInit()
+    {
+        gs_globalCursor = new wxCursor;
+
+        return TRUE;
+    }
+
+    virtual void OnExit()
+    {
+        delete gs_globalCursor;
+        gs_globalCursor = (wxCursor *)NULL;
+    }
+};
+
+// ============================================================================
+// implementation
+// ============================================================================
 
 // ----------------------------------------------------------------------------
 // wxCursorRefData
@@ -278,16 +312,19 @@ wxCursor::~wxCursor()
 // Global cursor setting
 // ----------------------------------------------------------------------------
 
-void wxSetCursor(const wxCursor& cursor)
+const wxCursor *wxGetGlobalCursor()
 {
-    extern wxCursor *g_globalCursor;
+    return gs_globalCursor;
+}
 
-    if ( cursor.Ok() && cursor.GetHCURSOR() )
+void wxSetCursor(const wxCursor& cursor)
+{
+    if ( cursor.Ok() )
     {
-        ::SetCursor((HCURSOR) cursor.GetHCURSOR());
+        ::SetCursor(GetHcursorOf(cursor));
 
-        if ( g_globalCursor )
-            (*g_globalCursor) = cursor;
+        if ( gs_globalCursor )
+            *gs_globalCursor = cursor;
     }
 }