keeping the OSX specific use of origin for non-native borders
fixes #19108
This commit is contained in:
@@ -227,6 +227,10 @@ protected:
|
|||||||
// wxGraphicsContext, in the expectation that the derived class will do it
|
// wxGraphicsContext, in the expectation that the derived class will do it
|
||||||
wxGCDCImpl(wxDC* owner, int);
|
wxGCDCImpl(wxDC* owner, int);
|
||||||
|
|
||||||
|
#ifdef __WXOSX__
|
||||||
|
virtual wxPoint OSXGetOrigin() const { return wxPoint(); }
|
||||||
|
#endif
|
||||||
|
|
||||||
// scaling variables
|
// scaling variables
|
||||||
bool m_logicalFunctionSupported;
|
bool m_logicalFunctionSupported;
|
||||||
wxGraphicsMatrix m_matrixOriginal;
|
wxGraphicsMatrix m_matrixOriginal;
|
||||||
|
@@ -32,9 +32,12 @@ public:
|
|||||||
virtual wxBitmap DoGetAsBitmap(const wxRect *subrect) const wxOVERRIDE;
|
virtual wxBitmap DoGetAsBitmap(const wxRect *subrect) const wxOVERRIDE;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual wxPoint OSXGetOrigin() const wxOVERRIDE;
|
||||||
|
|
||||||
bool m_release;
|
bool m_release;
|
||||||
int m_width;
|
int m_width;
|
||||||
int m_height;
|
int m_height;
|
||||||
|
wxPoint m_origin;
|
||||||
|
|
||||||
wxDECLARE_CLASS(wxWindowDCImpl);
|
wxDECLARE_CLASS(wxWindowDCImpl);
|
||||||
wxDECLARE_NO_COPY_CLASS(wxWindowDCImpl);
|
wxDECLARE_NO_COPY_CLASS(wxWindowDCImpl);
|
||||||
|
@@ -397,7 +397,11 @@ void wxGCDCImpl::DestroyClippingRegion()
|
|||||||
// so we must explicitly make sure it only covers the area we want it to draw
|
// so we must explicitly make sure it only covers the area we want it to draw
|
||||||
int width, height ;
|
int width, height ;
|
||||||
GetOwner()->GetSize( &width , &height ) ;
|
GetOwner()->GetSize( &width , &height ) ;
|
||||||
m_graphicContext->Clip( DeviceToLogicalX(0) , DeviceToLogicalY(0) , DeviceToLogicalXRel(width), DeviceToLogicalYRel(height) );
|
wxPoint origin;
|
||||||
|
#ifdef __WXOSX__
|
||||||
|
origin = OSXGetOrigin();
|
||||||
|
#endif
|
||||||
|
m_graphicContext->Clip( DeviceToLogicalX(origin.x) , DeviceToLogicalY(origin.y) , DeviceToLogicalXRel(width), DeviceToLogicalYRel(height) );
|
||||||
|
|
||||||
m_graphicContext->SetPen( m_pen );
|
m_graphicContext->SetPen( m_pen );
|
||||||
m_graphicContext->SetBrush( m_brush );
|
m_graphicContext->SetBrush( m_brush );
|
||||||
|
@@ -105,6 +105,11 @@ void wxWindowDCImpl::DoGetSize( int* width, int* height ) const
|
|||||||
*height = m_height;
|
*height = m_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxPoint wxWindowDCImpl::OSXGetOrigin() const
|
||||||
|
{
|
||||||
|
return m_origin;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* wxClientDCImpl
|
* wxClientDCImpl
|
||||||
*/
|
*/
|
||||||
@@ -120,14 +125,14 @@ wxClientDCImpl::wxClientDCImpl( wxDC *owner, wxWindow *window ) :
|
|||||||
wxWindowDCImpl( owner, window )
|
wxWindowDCImpl( owner, window )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( window, wxT("invalid window in wxClientDCImpl") );
|
wxCHECK_RET( window, wxT("invalid window in wxClientDCImpl") );
|
||||||
wxPoint origin = window->GetClientAreaOrigin() ;
|
m_origin = window->GetClientAreaOrigin() ;
|
||||||
m_window->GetClientSize( &m_width , &m_height);
|
m_window->GetClientSize( &m_width , &m_height);
|
||||||
if ( !m_window->IsShownOnScreen() )
|
if ( !m_window->IsShownOnScreen() )
|
||||||
m_width = m_height = 0;
|
m_width = m_height = 0;
|
||||||
|
|
||||||
int x0,y0;
|
int x0,y0;
|
||||||
DoGetDeviceOrigin(&x0,&y0);
|
DoGetDeviceOrigin(&x0,&y0);
|
||||||
SetDeviceOrigin( origin.x + x0, origin.y + y0 );
|
SetDeviceOrigin( m_origin.x + x0, m_origin.y + y0 );
|
||||||
|
|
||||||
DoSetClippingRegion( 0 , 0 , m_width , m_height ) ;
|
DoSetClippingRegion( 0 , 0 , m_width , m_height ) ;
|
||||||
}
|
}
|
||||||
@@ -152,9 +157,9 @@ wxPaintDCImpl::wxPaintDCImpl( wxDC *owner )
|
|||||||
wxPaintDCImpl::wxPaintDCImpl( wxDC *owner, wxWindow *window ) :
|
wxPaintDCImpl::wxPaintDCImpl( wxDC *owner, wxWindow *window ) :
|
||||||
wxWindowDCImpl( owner, window )
|
wxWindowDCImpl( owner, window )
|
||||||
{
|
{
|
||||||
wxPoint origin = window->GetClientAreaOrigin() ;
|
m_origin = window->GetClientAreaOrigin() ;
|
||||||
m_window->GetClientSize( &m_width , &m_height);
|
m_window->GetClientSize( &m_width , &m_height);
|
||||||
SetDeviceOrigin( origin.x, origin.y );
|
SetDeviceOrigin( m_origin.x, m_origin.y );
|
||||||
DoSetClippingRegion( 0 , 0 , m_width , m_height ) ;
|
DoSetClippingRegion( 0 , 0 , m_width , m_height ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user