]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/cursor.cpp
wxUSE_TOOLTIPS fix (good grief I think I just did this a couple days ago...)
[wxWidgets.git] / src / mac / carbon / cursor.cpp
index eace8c0b5d51cfff7f12eb66850cc6fe82e5a046..d0f6d1db7e8bcaea6077aabe655c7ea4c9cf6742 100644 (file)
 IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap)
 #endif
 
+class WXDLLEXPORT wxCursorRefData: public wxBitmapRefData
+{
+    DECLARE_NO_COPY_CLASS(wxCursorRefData)
+        
+    friend class WXDLLEXPORT wxBitmap;
+    friend class WXDLLEXPORT wxCursor;
+public:
+    wxCursorRefData();
+    ~wxCursorRefData();
+
+protected:
+    WXHCURSOR     m_hCursor;
+    bool        m_disposeHandle;
+    bool        m_releaseHandle;
+    bool        m_isColorCursor ;
+    long        m_themeCursor ;
+};
+
+#define M_CURSORDATA ((wxCursorRefData *)m_refData)
+#define M_CURSORHANDLERDATA ((wxCursorRefData *)bitmap->m_refData)
+
 const short kwxCursorBullseye = 0 ;
 const short kwxCursorBlank = 1 ;
 const short kwxCursorPencil = 2 ;
@@ -181,8 +202,8 @@ CursHandle wxGetStockCursor( int number )
 
 wxCursorRefData::wxCursorRefData()
 {
-    m_width = 16
-    m_height = 16;
+    SetWidth( 16 )
+    SetHeight( 16 );
     m_hCursor = NULL ;
     m_disposeHandle = false ;
     m_releaseHandle = false ;
@@ -234,12 +255,26 @@ wxCursor::wxCursor(char **bits)
 
 bool wxCursor::CreateFromXpm(const char **bits)
 {
+#if wxUSE_IMAGE
     wxCHECK_MSG( bits != NULL, FALSE, wxT("invalid cursor data") )
     wxXPMDecoder decoder;
     wxImage img = decoder.ReadData(bits);
     wxCHECK_MSG( img.Ok(), FALSE, wxT("invalid cursor data") )    
        CreateFromImage( img ) ;
     return TRUE;
+#else
+    return FALSE;
+#endif
+}
+
+WXHCURSOR wxCursor::GetHCURSOR() const 
+{ 
+    return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0); 
+}
+
+bool wxCursor::Ok() const 
+{ 
+    return (m_refData != NULL && ( M_CURSORDATA->m_hCursor != NULL || M_CURSORDATA->m_themeCursor != -1 ) ) ; 
 }
 
 short GetCTabIndex( CTabHandle colors , RGBColor *col )
@@ -260,6 +295,8 @@ short GetCTabIndex( CTabHandle colors , RGBColor *col )
     return retval ;
 }
 
+#if wxUSE_IMAGE
+
 void wxCursor::CreateFromImage(const wxImage & image) 
 {
     m_refData = new wxCursorRefData;
@@ -318,7 +355,7 @@ void wxCursor::CreateFromImage(const wxImage & image)
 
     (**ch).crsrHotSpot.h = hotSpotX ;
     (**ch).crsrHotSpot.v = hotSpotY ;
-    (**ch).crsrXTable = NULL ; 
+    (**ch).crsrXTable = 0 ; 
     (**ch).crsrID = GetCTSeed() ;
     
     memset( (**ch).crsr1Data  , 0 , sizeof( Bits16 ) ) ;
@@ -371,6 +408,8 @@ void wxCursor::CreateFromImage(const wxImage & image)
     M_CURSORDATA->m_isColorCursor = true ;
 }
 
+#endif //wxUSE_IMAGE
+
 wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY)
 {
     m_refData = new wxCursorRefData;
@@ -407,6 +446,7 @@ wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int ho
     }
     else
     {
+#if wxUSE_IMAGE
         wxImage image ;
         image.LoadFile( cursor_file , flags ) ;
         if( image.Ok() )
@@ -416,6 +456,7 @@ wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int ho
             delete m_refData ;
             CreateFromImage(image) ;
         }
+#endif
     }
 }