X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e9576ca53db96b462ed4c0b4bdf47d64c40203e4..15b83243e809f9bca9516fad201f40dff40a80e6:/src/mac/carbon/cursor.cpp diff --git a/src/mac/carbon/cursor.cpp b/src/mac/carbon/cursor.cpp index 4333364c93..dee7c92b5f 100644 --- a/src/mac/carbon/cursor.cpp +++ b/src/mac/carbon/cursor.cpp @@ -16,22 +16,26 @@ #include "wx/cursor.h" #include "wx/icon.h" -#if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) -#endif + +const short kwxCursorHandId = 9 ; +const short kwxCursorSizeWEId = 10 ; +const short kwxCursorSizeNSId = 11 ; +Cursor* MacArrowCursorPtr = &qd.arrow ; +CursHandle MacArrowCursor = &MacArrowCursorPtr ; +CursHandle gMacCurrentCursor = NULL ; wxCursorRefData::wxCursorRefData() { - m_width = 32; m_height = 32; - -/* TODO - m_hCursor = 0 ; -*/ + m_width = 32; + m_height = 32; + m_hCursor = NULL ; } wxCursorRefData::~wxCursorRefData() { - // TODO: destroy cursor + if ( m_hCursor && ( m_hCursor != MacArrowCursor ) ) + ::DisposeHandle( (Handle) m_hCursor ) ; } // Cursors @@ -56,122 +60,133 @@ wxCursor::wxCursor(int cursor_type) { m_refData = new wxCursorRefData; -/* TODO switch (cursor_type) { case wxCURSOR_WAIT: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_WAIT); + M_CURSORDATA->m_hCursor = ::GetCursor(watchCursor); break; case wxCURSOR_IBEAM: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_IBEAM); + M_CURSORDATA->m_hCursor = ::GetCursor(iBeamCursor); break; case wxCURSOR_CROSS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_CROSS); + M_CURSORDATA->m_hCursor = ::GetCursor(crossCursor); break; case wxCURSOR_SIZENWSE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENWSE); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeWEId); break; case wxCURSOR_SIZENESW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENESW); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeWEId); break; case wxCURSOR_SIZEWE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZEWE); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeWEId); break; case wxCURSOR_SIZENS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENS); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorSizeNSId); break; case wxCURSOR_CHAR: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } case wxCURSOR_HAND: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_HAND"); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); break; } case wxCURSOR_BULLSEYE: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BULLSEYE"); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); break; } case wxCURSOR_PENCIL: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PENCIL"); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); break; } case wxCURSOR_MAGNIFIER: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_MAGNIFIER"); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); break; } case wxCURSOR_NO_ENTRY: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_NO_ENTRY"); + M_CURSORDATA->m_hCursor = ::GetCursor(kwxCursorHandId); break; } case wxCURSOR_LEFT_BUTTON: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } case wxCURSOR_RIGHT_BUTTON: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } case wxCURSOR_MIDDLE_BUTTON: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } case wxCURSOR_SIZING: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_SIZING"); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } case wxCURSOR_WATCH: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_WATCH"); + M_CURSORDATA->m_hCursor = ::GetCursor(watchCursor); break; } case wxCURSOR_SPRAYCAN: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_ROLLER"); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } case wxCURSOR_PAINT_BRUSH: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PBRUSH"); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } case wxCURSOR_POINT_LEFT: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PLEFT"); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } case wxCURSOR_POINT_RIGHT: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PRIGHT"); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } case wxCURSOR_QUESTION_ARROW: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_QARROW"); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } case wxCURSOR_BLANK: { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BLANK"); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; } default: case wxCURSOR_ARROW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); + M_CURSORDATA->m_hCursor = MacArrowCursor; break; - } -*/ + } +} +void wxCursor::MacInstall() const +{ + if ( m_refData && M_CURSORDATA->m_hCursor ) + { + ::SetCursor( *M_CURSORDATA->m_hCursor ) ; + gMacCurrentCursor = M_CURSORDATA->m_hCursor ; + } + else + { + ::SetCursor( *MacArrowCursor ) ; + gMacCurrentCursor = NULL ; + } } wxCursor::~wxCursor() @@ -181,7 +196,7 @@ wxCursor::~wxCursor() // Global cursor setting void wxSetCursor(const wxCursor& cursor) { - // TODO (optional on platforms with no global cursor) + cursor.MacInstall() ; }