]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/cursor.cpp
process pending wx events before sending idle events
[wxWidgets.git] / src / mac / carbon / cursor.cpp
index 4f3f0d47e558d0f02f3726dbc3fb81ef0861bdad..cee91f767cb4cbf12e969b0e637aa48597fcb1f9 100644 (file)
 
 #ifndef WX_PRECOMP
     #include "wx/app.h"
+    #include "wx/icon.h"
+    #include "wx/image.h"
 #endif // WX_PRECOMP
 
-#include "wx/icon.h"
-#include "wx/image.h"
 #include "wx/xpmdecod.h"
 
 #include "wx/mac/private.h"
@@ -36,7 +36,7 @@ class WXDLLEXPORT wxCursorRefData: public wxBitmapRefData
 
 public:
     wxCursorRefData();
-    ~wxCursorRefData();
+    virtual ~wxCursorRefData();
 
 protected:
     WXHCURSOR     m_hCursor;
@@ -46,8 +46,7 @@ protected:
     long        m_themeCursor;
 };
 
-#define M_CURSORDATA ((wxCursorRefData *)m_refData)
-#define M_CURSORHANDLERDATA ((wxCursorRefData *)bitmap->m_refData)
+#define M_CURSORDATA wx_static_cast(wxCursorRefData*, m_refData)
 
 const short kwxCursorBullseye = 0;
 const short kwxCursorBlank = 1;
@@ -224,7 +223,9 @@ wxCursorRefData::~wxCursorRefData()
 {
     if ( m_isColorCursor )
     {
-        ::DisposeCCursor( (CCrsrHandle) m_hCursor ) ;
+#ifndef __LP64__
+               ::DisposeCCursor( (CCrsrHandle) m_hCursor ) ;
+#endif
     }
     else if ( m_disposeHandle )
     {
@@ -282,7 +283,7 @@ WXHCURSOR wxCursor::GetHCURSOR() const
     return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0);
 }
 
-bool wxCursor::Ok() const
+bool wxCursor::IsOk() const
 {
     return (m_refData != NULL && ( M_CURSORDATA->m_hCursor != NULL || M_CURSORDATA->m_themeCursor != -1 ) ) ;
 }
@@ -314,6 +315,7 @@ void wxCursor::CreateFromImage(const wxImage & image)
 {
     m_refData = new wxCursorRefData;
 
+#ifndef __LP64__
     int w = 16;
     int h = 16;
 
@@ -444,6 +446,8 @@ void wxCursor::CreateFromImage(const wxImage & image)
     HUnlock( (Handle)ch ) ;
     M_CURSORDATA->m_hCursor = ch ;
     M_CURSORDATA->m_isColorCursor = true ;
+#endif
+
 }
 
 #endif //wxUSE_IMAGE
@@ -453,6 +457,7 @@ wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int ho
     m_refData = new wxCursorRefData;
     if ( flags == wxBITMAP_TYPE_MACCURSOR_RESOURCE )
     {
+#ifndef __LP64__
         Str255 theName ;
         wxMacStringToPascal( cursor_file , theName ) ;
 
@@ -485,6 +490,7 @@ wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int ho
                     M_CURSORDATA->m_releaseHandle = true ;
             }
         }
+#endif
     }
     else
     {
@@ -495,7 +501,8 @@ wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int ho
         {
             image.SetOption( wxIMAGE_OPTION_CUR_HOTSPOT_X, hotSpotX ) ;
             image.SetOption( wxIMAGE_OPTION_CUR_HOTSPOT_Y, hotSpotY ) ;
-            delete m_refData ;
+            m_refData->DecRef() ;
+            m_refData = NULL ;
             CreateFromImage( image ) ;
         }
 #endif
@@ -620,10 +627,12 @@ void wxCursor::MacInstall() const
     }
     else if ( m_refData && M_CURSORDATA->m_hCursor )
     {
-        if ( M_CURSORDATA->m_isColorCursor )
+#ifndef __LP64__
+       if ( M_CURSORDATA->m_isColorCursor )
             ::SetCCursor( (CCrsrHandle) M_CURSORDATA->m_hCursor ) ;
         else
             ::SetCursor( * (CursHandle) M_CURSORDATA->m_hCursor ) ;
+#endif
     }
     else
     {