diff --git a/include/wx/mac/cursor.h b/include/wx/mac/cursor.h index fc610f9564..0b9fff3a85 100644 --- a/include/wx/mac/cursor.h +++ b/include/wx/mac/cursor.h @@ -29,7 +29,11 @@ public: ~wxCursorRefData(); protected: - WXHCURSOR m_hCursor; + WXHCURSOR m_hCursor; + bool m_disposeHandle; + bool m_releaseHandle; + bool m_isColorCursor ; + long m_themeCursor ; }; #define M_CURSORDATA ((wxCursorRefData *)m_refData) @@ -51,13 +55,17 @@ public: wxCursor(const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1, const char maskBits[] = NULL); + wxCursor(const wxImage & image) ; + wxCursor(const char **bits) ; + wxCursor(char **bits) ; wxCursor(const wxString& name, long flags = wxBITMAP_TYPE_MACCURSOR_RESOURCE, int hotSpotX = 0, int hotSpotY = 0); wxCursor(int cursor_type); ~wxCursor(); - virtual bool Ok() const { return (m_refData != NULL && M_CURSORDATA->m_hCursor != NULL ) ; } + bool CreateFromXpm(const char **bits) ; + virtual bool Ok() const { return (m_refData != NULL && ( M_CURSORDATA->m_hCursor != NULL || M_CURSORDATA->m_themeCursor != -1 ) ) ; } inline wxCursor& operator = (const wxCursor& cursor) { if (*this == cursor) return (*this); Ref(cursor); return *this; } inline bool operator == (const wxCursor& cursor) { return m_refData == cursor.m_refData; } @@ -67,6 +75,8 @@ public: void SetHCURSOR(WXHCURSOR cursor); inline WXHCURSOR GetHCURSOR() const { return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0); } +private : + void CreateFromImage(const wxImage & image) ; }; extern WXDLLEXPORT void wxSetCursor(const wxCursor& cursor); diff --git a/include/wx/mac/dnd.h b/include/wx/mac/dnd.h index e77bb0025a..964894d65c 100644 --- a/include/wx/mac/dnd.h +++ b/include/wx/mac/dnd.h @@ -43,7 +43,7 @@ class WXDLLEXPORT wxDropSource; // the icon 'name' from an XPM file under GTK, but will expand to something // else under MSW. If you don't use it, you will have to use #ifdef in the // application code. -#define wxDROP_ICON(name) wxICON(name) +#define wxDROP_ICON(X) wxCursor( (const char**) X##_xpm ) //------------------------------------------------------------------------- // wxDropTarget @@ -74,19 +74,32 @@ class WXDLLEXPORT wxDropTarget: public wxDropTargetBase class WXDLLEXPORT wxDropSource: public wxDropSourceBase { public: + // only left in for binary compatibility /* constructor. set data later with SetData() */ + wxDropSource( wxWindow *win , + const wxIcon © , + const wxIcon &move , + const wxIcon &none ); + + // only left in for binary compatibility + /* constructor for setting one data object */ + wxDropSource( wxDataObject& data, + wxWindow *win, + const wxIcon © , + const wxIcon &move , + const wxIcon &none ); + wxDropSource( wxWindow *win = (wxWindow *)NULL, - const wxIcon © = wxNullIcon, - const wxIcon &move = wxNullIcon, - const wxIcon &none = wxNullIcon); + const wxCursor &cursorCopy = wxNullCursor, + const wxCursor &cursorMove = wxNullCursor, + const wxCursor &cursorStop = wxNullCursor); /* constructor for setting one data object */ wxDropSource( wxDataObject& data, wxWindow *win, - const wxIcon © = wxNullIcon, - const wxIcon &move = wxNullIcon, - const wxIcon &none = wxNullIcon); - + const wxCursor &cursorCopy = wxNullCursor, + const wxCursor &cursorMove = wxNullCursor, + const wxCursor &cursorStop = wxNullCursor); ~wxDropSource(); @@ -96,6 +109,7 @@ public: wxWindow* GetWindow() { return m_window ; } void SetCurrentDrag( void* drag ) { m_currentDrag = drag ; } void* GetCurrentDrag() { return m_currentDrag ; } + bool MacInstallDefaultCursor(wxDragResult effect) ; protected : wxWindow *m_window; void* m_currentDrag ;