X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4db3c8ac631546f9b695e7590eaa4cb2805a1145..e69d5138dc8f95e294ae6d03beb4f321406f4e34:/src/cocoa/dcclient.mm?ds=sidebyside diff --git a/src/cocoa/dcclient.mm b/src/cocoa/dcclient.mm index bcf82d7aab..c22214c824 100644 --- a/src/cocoa/dcclient.mm +++ b/src/cocoa/dcclient.mm @@ -70,7 +70,10 @@ bool wxWindowDC::CocoaUnlockFocusOnNSView() bool wxWindowDC::CocoaLockFocus() { wxLogTrace(wxTRACE_COCOA,wxT("Locking focus on wxWindowDC=%p, NSView=%p"),this, m_window->GetNonClientNSView()); - m_cocoaWxToBoundsTransform = CocoaGetWxToBoundsTransform([m_window->GetNonClientNSView() isFlipped], [m_window->GetNonClientNSView() bounds].size.height); + NSAffineTransform *newTransform = CocoaGetWxToBoundsTransform([m_window->GetNonClientNSView() isFlipped], [m_window->GetNonClientNSView() bounds].size.height); + [newTransform retain]; + [m_cocoaWxToBoundsTransform release]; + m_cocoaWxToBoundsTransform = newTransform; return CocoaLockFocusOnNSView(m_window->GetNonClientNSView()); } @@ -80,17 +83,15 @@ bool wxWindowDC::CocoaUnlockFocus() return CocoaUnlockFocusOnNSView(); } -void wxWindowDC::Clear() +bool wxWindowDC::CocoaGetBounds(void *rectData) { - if(!CocoaTakeFocus()) return; - - NSGraphicsContext *context = [NSGraphicsContext currentContext]; - [context saveGraphicsState]; - - [m_backgroundBrush.GetNSColor() set]; - [NSBezierPath fillRect:[m_lockedNSView bounds]]; - - [context restoreGraphicsState]; + if(!rectData) + return false; + if(!m_lockedNSView) + return false; + NSRect *pRect = (NSRect*)rectData; + *pRect = [m_lockedNSView bounds]; + return true; } /* @@ -115,7 +116,10 @@ wxClientDC::~wxClientDC(void) bool wxClientDC::CocoaLockFocus() { wxLogTrace(wxTRACE_COCOA,wxT("Locking focus on wxClientDC=%p, NSView=%p"),this, m_window->GetNSView()); - m_cocoaWxToBoundsTransform = m_window->CocoaGetWxToBoundsTransform(); + NSAffineTransform *newTransform = m_window->CocoaGetWxToBoundsTransform(); + [newTransform retain]; + [m_cocoaWxToBoundsTransform release]; + m_cocoaWxToBoundsTransform = newTransform; return CocoaLockFocusOnNSView(m_window->GetNSView()); } @@ -140,7 +144,10 @@ wxPaintDC::wxPaintDC( wxWindow *window ) wxASSERT_MSG([NSView focusView]==window->GetNSView(), wxT("PaintDC's NSView does not have focus. Please use wxPaintDC only as the first DC created in a paint handler")); sm_cocoaDCStack.Insert(this); m_lockedNSView = window->GetNSView(); - m_cocoaWxToBoundsTransform = window->CocoaGetWxToBoundsTransform(); + NSAffineTransform *newTransform = window->CocoaGetWxToBoundsTransform(); + [newTransform retain]; + [m_cocoaWxToBoundsTransform release]; + m_cocoaWxToBoundsTransform = newTransform; CocoaApplyTransformations(); };