X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a8cd4a3a037df6caf2c8e007c77893b58cbd6018..a3e76614adbcebebc7ec4f64407d6b09a12d0892:/src/mac/dcclient.cpp diff --git a/src/mac/dcclient.cpp b/src/mac/dcclient.cpp index 8d97ce4889..6312bc3c82 100644 --- a/src/mac/dcclient.cpp +++ b/src/mac/dcclient.cpp @@ -39,7 +39,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxWindowDC) * wxWindowDC */ -#include +#include "wx/mac/uma.h" wxWindowDC::wxWindowDC() { @@ -48,11 +48,15 @@ wxWindowDC::wxWindowDC() wxWindowDC::wxWindowDC(wxWindow *the_canvas) { WindowRef windowref ; - wxWindow* rootwindow ; + wxWindowMac* rootwindow ; // this time it is really the full window - - the_canvas->MacGetPortParams(&m_macLocalOrigin, &m_macClipRect , &windowref , &rootwindow ); + Rect clipRect ; + the_canvas->MacGetPortParams(&m_macLocalOrigin, &clipRect , &windowref , &rootwindow ); + SetRectRgn( m_macBoundaryClipRgn , clipRect.left , clipRect.top , clipRect.right , clipRect.bottom ) ; + SectRgn( m_macBoundaryClipRgn , the_canvas->MacGetVisibleRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; + OffsetRgn( m_macBoundaryClipRgn , m_macLocalOrigin.h , m_macLocalOrigin.v ) ; + CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; m_macPort = UMAGetWindowPort( windowref ) ; m_minY = m_minX = 0; wxSize size = the_canvas->GetSize() ; @@ -60,7 +64,7 @@ wxWindowDC::wxWindowDC(wxWindow *the_canvas) m_maxY = size.y ; m_ok = TRUE ; - SetBackground(wxBrush(the_canvas->GetBackgroundColour(), wxSOLID)); + SetBackground(the_canvas->MacGetBackgroundBrush()); } wxWindowDC::~wxWindowDC() @@ -78,16 +82,24 @@ wxClientDC::wxClientDC() wxClientDC::wxClientDC(wxWindow *window) { WindowRef windowref ; - wxWindow* rootwindow ; + wxWindowMac* rootwindow ; + + Rect clipRect ; + wxPoint origin = window->GetClientAreaOrigin() ; - window->MacGetPortClientParams(&m_macLocalOrigin, &m_macClipRect , &windowref , &rootwindow ); + window->MacGetPortClientParams(&m_macLocalOrigin, &clipRect , &windowref , &rootwindow ); + SetRectRgn( m_macBoundaryClipRgn , clipRect.left + origin.x , clipRect.top + origin.y , clipRect.right + origin.x , clipRect.bottom + origin.y ) ; + SectRgn( m_macBoundaryClipRgn , window->MacGetVisibleRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; + OffsetRgn( m_macBoundaryClipRgn , -origin.x , -origin.y ) ; + OffsetRgn( m_macBoundaryClipRgn , m_macLocalOrigin.h , m_macLocalOrigin.v ) ; + CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; m_macPort = UMAGetWindowPort( windowref ) ; m_minY = m_minX = 0; wxSize size = window->GetSize() ; m_maxX = size.x ; m_maxY = size.y ; m_ok = TRUE ; - SetBackground(wxBrush(window->GetBackgroundColour(), wxSOLID)); + SetBackground(window->MacGetBackgroundBrush()); SetFont( window->GetFont() ) ; } @@ -106,10 +118,18 @@ wxPaintDC::wxPaintDC() wxPaintDC::wxPaintDC(wxWindow *window) { WindowRef windowref ; - wxWindow* rootwindow ; + wxWindowMac* rootwindow ; - window->MacGetPortClientParams(&m_macLocalOrigin, &m_macClipRect , &windowref , &rootwindow ); - + Rect clipRect ; + wxPoint origin = window->GetClientAreaOrigin() ; + + window->MacGetPortClientParams(&m_macLocalOrigin, &clipRect , &windowref , &rootwindow ); + SetRectRgn( m_macBoundaryClipRgn , clipRect.left + origin.x , clipRect.top + origin.y , clipRect.right + origin.x , clipRect.bottom + origin.y ) ; + SectRgn( m_macBoundaryClipRgn , window->MacGetVisibleRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; + OffsetRgn( m_macBoundaryClipRgn , -origin.x , -origin.y ) ; + SectRgn( m_macBoundaryClipRgn , window->GetUpdateRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; + OffsetRgn( m_macBoundaryClipRgn , m_macLocalOrigin.h , m_macLocalOrigin.v ) ; + CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; m_macPort = UMAGetWindowPort( windowref ) ; m_ok = TRUE ; /* @@ -121,8 +141,8 @@ wxPaintDC::wxPaintDC(wxWindow *window) m_maxY = size.y ; SetClippingRegion( x , y , w , h ) ; */ - SetBackground(wxBrush(window->GetBackgroundColour(), wxSOLID)); - SetFont(window->GetFont() ) ; + SetBackground(window->MacGetBackgroundBrush()); + SetFont(window->GetFont() ) ; } wxPaintDC::~wxPaintDC()