X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/891d0563f7f43b640c4e0e78c30f038b2127fffb..daa66792aa4a108887d2b4e8078df6067b6a762f:/src/cocoa/dcclient.mm diff --git a/src/cocoa/dcclient.mm b/src/cocoa/dcclient.mm index b5da8bd6c3..b64c2ac01c 100644 --- a/src/cocoa/dcclient.mm +++ b/src/cocoa/dcclient.mm @@ -14,6 +14,9 @@ #import #import +#import +#import +#import /* * wxWindowDC @@ -21,10 +24,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC) wxWindowDC::wxWindowDC(void) +: m_window(NULL) { }; wxWindowDC::wxWindowDC( wxWindow *window ) +: m_window(window) { wxFAIL_MSG("non-client window DC's are not supported"); }; @@ -33,6 +38,19 @@ wxWindowDC::~wxWindowDC(void) { }; +void wxWindowDC::Clear() +{ + wxASSERT(m_window); + + NSGraphicsContext *context = [NSGraphicsContext currentContext]; + [context saveGraphicsState]; + + [m_backgroundBrush.GetNSColor() set]; + [NSBezierPath fillRect:[m_window->GetNSView() bounds]]; + + [context restoreGraphicsState]; +} + /* * wxClientDC */ @@ -44,6 +62,7 @@ wxClientDC::wxClientDC(void) wxClientDC::wxClientDC( wxWindow *window ) { + m_window = window; }; wxClientDC::~wxClientDC(void) @@ -61,9 +80,8 @@ wxPaintDC::wxPaintDC(void) wxPaintDC::wxPaintDC( wxWindow *window ) { - wxASSERT_MSG(!sm_focusedDC,"Found another wxDC with focus. Do not use wxPaintDC outside of paint handlers!"); + 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"); - sm_focusedDC=this; // This transform flips the graphics since wxDC uses top-left origin if(![window->GetNSView() isFlipped]) { @@ -86,7 +104,5 @@ wxPaintDC::wxPaintDC( wxWindow *window ) wxPaintDC::~wxPaintDC(void) { - if(sm_focusedDC==this) - sm_focusedDC=NULL; };