X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4799f3baab3805e51cc1754b89d855d32e94c232..609577038acc7087a349d06aaf328e0b81a05f22:/src/cocoa/pen.mm diff --git a/src/cocoa/pen.mm b/src/cocoa/pen.mm index 0968133ffc..0f08a1dc3e 100644 --- a/src/cocoa/pen.mm +++ b/src/cocoa/pen.mm @@ -17,6 +17,8 @@ #include "wx/colour.h" #endif //WX_PRECOMP +#include "wx/cocoa/ObjcRef.h" + #import // ======================================================================== @@ -24,7 +26,6 @@ // ======================================================================== class WXDLLEXPORT wxPenRefData: public wxGDIRefData { - friend class WXDLLEXPORT wxPen; public: wxPenRefData(const wxColour& colour = wxNullColour, int width = 1, int style = wxSOLID, @@ -79,6 +80,9 @@ protected: static const CGFloat scm_patternShortDash[]; static const int scm_countDotDash; static const CGFloat scm_patternDotDash[]; + + friend class WXDLLIMPEXP_FWD_CORE wxPen; + private: // Don't allow assignment wxPenRefData& operator=(const wxPenRefData& data); @@ -131,13 +135,13 @@ inline wxPenRefData::wxPenRefData(const wxPenRefData& data) m_nbDash = data.m_nbDash; m_dash = data.m_dash; m_stipple = data.m_stipple; - m_cocoaNSColor = [data.m_cocoaNSColor retain]; + m_cocoaNSColor = wxGCSafeRetain(data.m_cocoaNSColor); m_cocoaDash = NULL; } inline void wxPenRefData::FreeCocoaNSColor() { - [m_cocoaNSColor release]; + wxGCSafeRelease(m_cocoaNSColor); m_cocoaNSColor = nil; } @@ -154,7 +158,7 @@ inline WX_NSColor wxPenRefData::GetNSColor() switch( m_style ) { case wxTRANSPARENT: - m_cocoaNSColor = [[NSColor clearColor] retain]; + m_cocoaNSColor = wxGCSafeRetain([NSColor clearColor]); break; case wxSTIPPLE: // wxBitmap isn't implemented yet @@ -179,6 +183,7 @@ inline WX_NSColor wxPenRefData::GetNSColor() if(!colour_NSColor) colour_NSColor = [NSColor clearColor]; m_cocoaNSColor = [colour_NSColor copyWithZone:nil]; + [wxGCSafeRetain(m_cocoaNSColor) release]; // retain in GC. no change in RR. break; } } @@ -264,12 +269,12 @@ wxPen::wxPen(const wxBitmap& stipple, int width) m_refData = new wxPenRefData(wxNullColour,width,wxSTIPPLE,stipple); } -wxObjectRefData *wxPen::CreateRefData() const +wxGDIRefData *wxPen::CreateGDIRefData() const { return new wxPenRefData; } -wxObjectRefData *wxPen::CloneRefData(const wxObjectRefData *data) const +wxGDIRefData *wxPen::CloneGDIRefData(const wxGDIRefData *data) const { return new wxPenRefData(*(wxPenRefData *)data); } @@ -322,7 +327,7 @@ void wxPen::SetStipple(const wxBitmap& Stipple) M_PENDATA->SetStipple(Stipple); } -wxColour& wxPen::GetColour() const +wxColour wxPen::GetColour() const { return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour); }