]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/cursor.cpp
Fix crash in wxDC::GetMultiLineTextExtent() after last commit.
[wxWidgets.git] / src / osx / carbon / cursor.cpp
index b7849bc7321010ccf8ffca0a3651a92c7ee7e0c8..fba9efb8f53fb64838262720afcb4e6f783aa130 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        src/mac/carbon/cursor.cpp
+// Name:        src/osx/carbon/cursor.cpp
 // Purpose:     wxCursor class
 // Author:      Stefan Csomor
 // Modified by:
@@ -66,10 +66,10 @@ protected:
 
     friend class wxCursor;
 
-    DECLARE_NO_ASSIGN_CLASS(wxCursorRefData)
+    wxDECLARE_NO_ASSIGN_CLASS(wxCursorRefData);
 };
 
-#define M_CURSORDATA wx_static_cast(wxCursorRefData*, m_refData)
+#define M_CURSORDATA static_cast<wxCursorRefData*>(m_refData)
 
 #if wxOSX_USE_COCOA_OR_CARBON
 
@@ -196,6 +196,14 @@ ClassicCursor gMacCursors[kwxCursorLast+1] =
 {0x000A, 0x0006}
 },
 
+{
+{0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x0810, 0x1088, 0x1088, 0x1088,
+0x1388, 0x1008, 0x1008, 0x0810, 0x07E0, 0x07E0, 0x07E0, 0x07E0},
+{0x07E0, 0x07E0, 0x07E0, 0x07E0, 0x0FF0, 0x1FF8, 0x1FF8, 0x1FF8,
+0x1FF8, 0x1FF8, 0x1FF8, 0x0FF0, 0x07E0, 0x07E0, 0x07E0, 0x07E0},
+{0x0008, 0x0008}
+},
+    
 };
 
 #endif
@@ -231,14 +239,14 @@ wxCursorRefData::wxCursorRefData()
 #endif
 }
 
-wxCursorRefData::wxCursorRefData(const wxCursorRefData& cursor)
+wxCursorRefData::wxCursorRefData(const wxCursorRefData& cursor) : wxGDIRefData()
 {
-    // FIXME: need to copy the cursor
     m_hCursor = NULL;
 
 #if wxOSX_USE_COCOA
-    wxUnusedVar(cursor);
+    m_hCursor = (WX_NSCursor) wxMacCocoaRetain(cursor.m_hCursor);
 #elif wxOSX_USE_CARBON
+    // FIXME: need to copy the cursor
     m_disposeHandle = false;
     m_releaseHandle = false;
     m_isColorCursor = cursor.m_isColorCursor;
@@ -274,11 +282,6 @@ wxCursor::wxCursor()
 {
 }
 
-wxCursor::wxCursor(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height),
-    int WXUNUSED(hotSpotX), int WXUNUSED(hotSpotY), const char WXUNUSED(maskBits)[])
-{
-}
-
 wxCursor::wxCursor( const wxImage &image )
 {
 #if wxUSE_IMAGE
@@ -286,11 +289,6 @@ wxCursor::wxCursor( const wxImage &image )
 #endif
 }
 
-wxCursor::wxCursor(const char* const* bits)
-{
-    (void) CreateFromXpm(bits);
-}
-
 wxGDIRefData *wxCursor::CreateGDIRefData() const
 {
     return new wxCursorRefData;
@@ -298,21 +296,7 @@ wxGDIRefData *wxCursor::CreateGDIRefData() const
 
 wxGDIRefData *wxCursor::CloneGDIRefData(const wxGDIRefData *data) const
 {
-    return new wxCursorRefData(*wx_static_cast(const wxCursorRefData *, data));
-}
-
-bool wxCursor::CreateFromXpm(const char* const* 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
+    return new wxCursorRefData(*static_cast<const wxCursorRefData *>(data));
 }
 
 WXHCURSOR wxCursor::GetHCURSOR() const
@@ -355,7 +339,7 @@ void wxCursor::CreateFromImage(const wxImage & image)
     CGImageRef cgimage = wxMacCreateCGImageFromBitmap(bmp);
     if ( cgimage )
     {
-        M_CURSORDATA->m_hCursor = wxMacCocoaCreateCursorFromCGImage( cgimage, hotSpotX, hotSpotY ); 
+        M_CURSORDATA->m_hCursor = wxMacCocoaCreateCursorFromCGImage( cgimage, hotSpotX, hotSpotY );
         CFRelease( cgimage );
     }
 #elif wxOSX_USE_CARBON
@@ -543,7 +527,7 @@ wxCursor::wxCursor(const wxString& cursor_file, wxBitmapType flags, int hotSpotX
 #if wxUSE_IMAGE
         wxImage image ;
         image.LoadFile( cursor_file, flags ) ;
-        if ( image.Ok() )
+        if ( image.IsOk() )
         {
             image.SetOption( wxIMAGE_OPTION_CUR_HOTSPOT_X, hotSpotX ) ;
             image.SetOption( wxIMAGE_OPTION_CUR_HOTSPOT_Y, hotSpotY ) ;
@@ -556,7 +540,7 @@ wxCursor::wxCursor(const wxString& cursor_file, wxBitmapType flags, int hotSpotX
 }
 
 // Cursors by stock number
-wxCursor::wxCursor(int cursor_type)
+void wxCursor::InitFromStock(wxStockCursor cursor_type)
 {
     m_refData = new wxCursorRefData;
 #if wxOSX_USE_COCOA
@@ -652,6 +636,14 @@ wxCursor::wxCursor(int cursor_type)
         M_CURSORDATA->m_hCursor = wxGetStockCursor(kwxCursorRoller);
         break;
 
+    case wxCURSOR_OPEN_HAND:
+        M_CURSORDATA->m_themeCursor = kThemeOpenHandCursor;
+        break;
+
+    case wxCURSOR_CLOSED_HAND:
+        M_CURSORDATA->m_themeCursor = kThemeClosedHandCursor;
+        break;
+
     case wxCURSOR_CHAR:
     case wxCURSOR_ARROW:
     case wxCURSOR_LEFT_BUTTON: