X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b66e98539f7fd23aed2d57511677edf460fd4082..006b7af2b256afa8608630e796b6cf6a04b2bba5:/src/cocoa/dcclient.mm diff --git a/src/cocoa/dcclient.mm b/src/cocoa/dcclient.mm index 4e36df97c9..c22214c824 100644 --- a/src/cocoa/dcclient.mm +++ b/src/cocoa/dcclient.mm @@ -6,7 +6,7 @@ // Created: 2003/04/01 // RCS-ID: $Id$ // Copyright: (c) 2003 David Elliott -// Licence: wxWindows license +// Licence: wxWidgets licence ///////////////////////////////////////////////////////////////////////////// #include "wx/wxprec.h" @@ -38,7 +38,7 @@ wxWindowDC::wxWindowDC( wxWindow *window ) : m_window(window) , m_lockedNSView(NULL) { - wxLogDebug("non-client window DC's are not supported, oh well"); + wxLogDebug(wxT("non-client window DC's are not supported, oh well")); }; wxWindowDC::~wxWindowDC(void) @@ -51,13 +51,11 @@ bool wxWindowDC::CocoaLockFocusOnNSView(WX_NSView nsview) if([nsview lockFocusIfCanDraw]) { sm_cocoaDCStack.Insert(this); - m_cocoaFlipped = [nsview isFlipped]; - m_cocoaHeight = [nsview bounds].size.height; CocoaApplyTransformations(); m_lockedNSView = nsview; return true; } - wxLogDebug("focus lock failed!"); + wxLogDebug(wxT("focus lock failed!")); return false; } @@ -71,27 +69,29 @@ bool wxWindowDC::CocoaUnlockFocusOnNSView() bool wxWindowDC::CocoaLockFocus() { - wxLogDebug("Locking focus on wxWindowDC=%p, NSView=%p",this, m_window->GetNonClientNSView()); + wxLogTrace(wxTRACE_COCOA,wxT("Locking focus on wxWindowDC=%p, NSView=%p"),this, m_window->GetNonClientNSView()); + 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()); } bool wxWindowDC::CocoaUnlockFocus() { - wxLogDebug("Unlocking focus on wxWindowDC=%p, NSView=%p",this, m_window->GetNonClientNSView()); + wxLogTrace(wxTRACE_COCOA,wxT("Unlocking focus on wxWindowDC=%p, NSView=%p"),this, m_window->GetNonClientNSView()); 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,13 +115,17 @@ wxClientDC::~wxClientDC(void) bool wxClientDC::CocoaLockFocus() { - wxLogDebug("Locking focus on wxClientDC=%p, NSView=%p",this, m_window->GetNSView()); + wxLogTrace(wxTRACE_COCOA,wxT("Locking focus on wxClientDC=%p, NSView=%p"),this, m_window->GetNSView()); + NSAffineTransform *newTransform = m_window->CocoaGetWxToBoundsTransform(); + [newTransform retain]; + [m_cocoaWxToBoundsTransform release]; + m_cocoaWxToBoundsTransform = newTransform; return CocoaLockFocusOnNSView(m_window->GetNSView()); } bool wxClientDC::CocoaUnlockFocus() { - wxLogDebug("Unlocking focus on wxClientDC=%p, NSView=%p",this, m_window->GetNSView()); + wxLogTrace(wxTRACE_COCOA,wxT("Unlocking focus on wxClientDC=%p, NSView=%p"),this, m_window->GetNSView()); return CocoaUnlockFocusOnNSView(); } @@ -137,11 +141,13 @@ wxPaintDC::wxPaintDC(void) wxPaintDC::wxPaintDC( wxWindow *window ) { m_window = window; - wxASSERT_MSG([NSView focusView]==window->GetNSView(), "PaintDC's NSView does not have focus. Please use wxPaintDC only as the first DC created in a paint handler"); + 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_cocoaFlipped = [window->GetNSView() isFlipped]; - m_cocoaHeight = [window->GetNSView() bounds].size.height; + NSAffineTransform *newTransform = window->CocoaGetWxToBoundsTransform(); + [newTransform retain]; + [m_cocoaWxToBoundsTransform release]; + m_cocoaWxToBoundsTransform = newTransform; CocoaApplyTransformations(); }; @@ -152,7 +158,7 @@ wxPaintDC::~wxPaintDC(void) bool wxPaintDC::CocoaLockFocus() { - wxFAIL_MSG("wxPaintDC cannot be asked to lock focus!"); + wxFAIL_MSG(wxT("wxPaintDC cannot be asked to lock focus!")); return false; }