refresh had to offset the region by borders
moving windows had to take parent borders into account as well on composited windows git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28605 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -46,7 +46,9 @@
|
|||||||
|
|
||||||
#define wxWINDOW_HSCROLL 5998
|
#define wxWINDOW_HSCROLL 5998
|
||||||
#define wxWINDOW_VSCROLL 5997
|
#define wxWINDOW_VSCROLL 5997
|
||||||
#define MAC_SCROLLBAR_SIZE 16
|
|
||||||
|
#define MAC_SCROLLBAR_SIZE 15
|
||||||
|
#define MAC_SMALL_SCROLLBAR_SIZE 11
|
||||||
|
|
||||||
#include "wx/mac/uma.h"
|
#include "wx/mac/uma.h"
|
||||||
#ifndef __DARWIN__
|
#ifndef __DARWIN__
|
||||||
@@ -513,10 +515,13 @@ pascal OSStatus wxMacSetupControlBackground( ControlRef iControl , SInt16 iMessa
|
|||||||
wxWindow* wx = (wxWindow*) wxFindControlFromMacControl( iControl ) ;
|
wxWindow* wx = (wxWindow*) wxFindControlFromMacControl( iControl ) ;
|
||||||
if ( wx != NULL )
|
if ( wx != NULL )
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
const wxBrush &brush = wx->MacGetBackgroundBrush() ;
|
const wxBrush &brush = wx->MacGetBackgroundBrush() ;
|
||||||
if ( brush.Ok() )
|
if ( brush.Ok() )
|
||||||
{
|
{
|
||||||
wxDC::MacSetupBackgroundForCurrentPort( brush ) ;
|
wxDC::MacSetupBackgroundForCurrentPort( brush ) ;
|
||||||
|
*/
|
||||||
|
// this clipping is only needed for non HIView
|
||||||
|
|
||||||
RgnHandle clip = NewRgn() ;
|
RgnHandle clip = NewRgn() ;
|
||||||
int x = 0 , y = 0;
|
int x = 0 , y = 0;
|
||||||
@@ -528,6 +533,7 @@ pascal OSStatus wxMacSetupControlBackground( ControlRef iControl , SInt16 iMessa
|
|||||||
DisposeRgn( clip ) ;
|
DisposeRgn( clip ) ;
|
||||||
|
|
||||||
status = noErr ;
|
status = noErr ;
|
||||||
|
/*
|
||||||
}
|
}
|
||||||
else if ( wx->MacIsUserPane() )
|
else if ( wx->MacIsUserPane() )
|
||||||
{
|
{
|
||||||
@@ -535,6 +541,7 @@ pascal OSStatus wxMacSetupControlBackground( ControlRef iControl , SInt16 iMessa
|
|||||||
// setup of our parent ourselves
|
// setup of our parent ourselves
|
||||||
status = SetUpControlBackground( (ControlRef) wx->GetParent()->GetHandle() , iDepth , iIsColor ) ;
|
status = SetUpControlBackground( (ControlRef) wx->GetParent()->GetHandle() , iDepth , iIsColor ) ;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break ;
|
break ;
|
||||||
@@ -897,6 +904,8 @@ bool wxWindowMac::SetBackgroundColour(const wxColour& col )
|
|||||||
}
|
}
|
||||||
MacSetBackgroundBrush( brush ) ;
|
MacSetBackgroundBrush( brush ) ;
|
||||||
|
|
||||||
|
MacUpdateControlFont() ;
|
||||||
|
|
||||||
return true ;
|
return true ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1347,6 +1356,7 @@ void wxWindowMac::DoGetClientSize(int *x, int *y) const
|
|||||||
ww -= MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ;
|
ww -= MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ;
|
||||||
hh -= MacGetTopBorderSize( ) + MacGetBottomBorderSize( );
|
hh -= MacGetTopBorderSize( ) + MacGetBottomBorderSize( );
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
if ( (m_vScrollBar && m_vScrollBar->IsShown()) || (m_hScrollBar && m_hScrollBar->IsShown()) )
|
if ( (m_vScrollBar && m_vScrollBar->IsShown()) || (m_hScrollBar && m_hScrollBar->IsShown()) )
|
||||||
{
|
{
|
||||||
int x1 = 0 ;
|
int x1 = 0 ;
|
||||||
@@ -1374,7 +1384,7 @@ void wxWindowMac::DoGetClientSize(int *x, int *y) const
|
|||||||
|
|
||||||
if (m_hScrollBar && m_hScrollBar->IsShown() )
|
if (m_hScrollBar && m_hScrollBar->IsShown() )
|
||||||
{
|
{
|
||||||
hh -= MAC_SCROLLBAR_SIZE;
|
hh -= m_hScrollBar->GetSize().y ; // MAC_SCROLLBAR_SIZE ;
|
||||||
if ( h-y1 >= totH )
|
if ( h-y1 >= totH )
|
||||||
{
|
{
|
||||||
hh += 1 ;
|
hh += 1 ;
|
||||||
@@ -1382,13 +1392,22 @@ void wxWindowMac::DoGetClientSize(int *x, int *y) const
|
|||||||
}
|
}
|
||||||
if (m_vScrollBar && m_vScrollBar->IsShown() )
|
if (m_vScrollBar && m_vScrollBar->IsShown() )
|
||||||
{
|
{
|
||||||
ww -= MAC_SCROLLBAR_SIZE;
|
ww -= m_vScrollBar->GetSize().x ; // MAC_SCROLLBAR_SIZE;
|
||||||
if ( w-x1 >= totW )
|
if ( w-x1 >= totW )
|
||||||
{
|
{
|
||||||
ww += 1 ;
|
ww += 1 ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
if (m_hScrollBar && m_hScrollBar->IsShown() )
|
||||||
|
{
|
||||||
|
hh -= m_hScrollBar->GetSize().y ; // MAC_SCROLLBAR_SIZE ;
|
||||||
|
}
|
||||||
|
if (m_vScrollBar && m_vScrollBar->IsShown() )
|
||||||
|
{
|
||||||
|
ww -= m_vScrollBar->GetSize().x ; // MAC_SCROLLBAR_SIZE;
|
||||||
|
}
|
||||||
if(x) *x = ww;
|
if(x) *x = ww;
|
||||||
if(y) *y = hh;
|
if(y) *y = hh;
|
||||||
|
|
||||||
@@ -1500,17 +1519,20 @@ void wxWindowMac::DoSetToolTip(wxToolTip *tooltip)
|
|||||||
|
|
||||||
void wxWindowMac::DoMoveWindow(int x, int y, int width, int height)
|
void wxWindowMac::DoMoveWindow(int x, int y, int width, int height)
|
||||||
{
|
{
|
||||||
|
// this is never called for a toplevel window, so we know we have a parent
|
||||||
int former_x , former_y , former_w, former_h ;
|
int former_x , former_y , former_w, former_h ;
|
||||||
#if !TARGET_API_MAC_OSX
|
|
||||||
|
// Get true coordinates of former position
|
||||||
DoGetPosition( &former_x , &former_y ) ;
|
DoGetPosition( &former_x , &former_y ) ;
|
||||||
DoGetSize( &former_w , &former_h ) ;
|
DoGetSize( &former_w , &former_h ) ;
|
||||||
#else
|
|
||||||
MacGetPositionAndSizeFromControl( former_x , former_y , former_w , former_h ) ;
|
wxWindow *parent = GetParent();
|
||||||
former_x -= MacGetLeftBorderSize() ;
|
if ( parent )
|
||||||
former_y -= MacGetTopBorderSize() ;
|
{
|
||||||
former_w += MacGetLeftBorderSize() + MacGetRightBorderSize() ;
|
wxPoint pt(parent->GetClientAreaOrigin());
|
||||||
former_h += MacGetTopBorderSize() + MacGetBottomBorderSize() ;
|
former_x += pt.x ;
|
||||||
#endif
|
former_y += pt.y ;
|
||||||
|
}
|
||||||
|
|
||||||
int actualWidth = width;
|
int actualWidth = width;
|
||||||
int actualHeight = height;
|
int actualHeight = height;
|
||||||
@@ -1542,6 +1564,16 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height)
|
|||||||
{
|
{
|
||||||
// we don't adjust twice for the origin
|
// we don't adjust twice for the origin
|
||||||
Rect r = wxMacGetBoundsForControl(this , wxPoint( actualX,actualY), wxSize( actualWidth, actualHeight ) , false ) ;
|
Rect r = wxMacGetBoundsForControl(this , wxPoint( actualX,actualY), wxSize( actualWidth, actualHeight ) , false ) ;
|
||||||
|
#if TARGET_API_MAC_OSX
|
||||||
|
// this is in window relative coordinate, as this parent may have a border, its physical position is offset by this border
|
||||||
|
if ( ! GetParent()->IsTopLevel() )
|
||||||
|
{
|
||||||
|
r.left -= GetParent()->MacGetLeftBorderSize() ;
|
||||||
|
r.top -= GetParent()->MacGetTopBorderSize() ;
|
||||||
|
r.right -= GetParent()->MacGetLeftBorderSize() ;
|
||||||
|
r.bottom -= GetParent()->MacGetTopBorderSize() ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
bool vis = m_peer->IsVisible();
|
bool vis = m_peer->IsVisible();
|
||||||
|
|
||||||
// the HIViewSetFrame call itself should invalidate the areas, but when testing with the UnicodeTextCtrl it does not !
|
// the HIViewSetFrame call itself should invalidate the areas, but when testing with the UnicodeTextCtrl it does not !
|
||||||
@@ -1925,6 +1957,9 @@ void wxWindowMac::Refresh(bool eraseBack, const wxRect *rect)
|
|||||||
SectRgn( (RgnHandle) MacGetVisibleRegion().GetWXHRGN() , update , update ) ;
|
SectRgn( (RgnHandle) MacGetVisibleRegion().GetWXHRGN() , update , update ) ;
|
||||||
wxPoint origin = GetClientAreaOrigin() ;
|
wxPoint origin = GetClientAreaOrigin() ;
|
||||||
OffsetRgn( update, origin.x , origin.y ) ;
|
OffsetRgn( update, origin.x , origin.y ) ;
|
||||||
|
// right now this is wx' window coordinates, as our native peer does not have borders, this is
|
||||||
|
// inset
|
||||||
|
OffsetRgn( update , -MacGetLeftBorderSize() , -MacGetTopBorderSize() ) ;
|
||||||
m_peer->SetNeedsDisplay( true , update) ;
|
m_peer->SetNeedsDisplay( true , update) ;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -2572,6 +2607,7 @@ wxRegion wxWindowMac::MacGetVisibleRegion( bool includeOuterStructures )
|
|||||||
if ( includeOuterStructures )
|
if ( includeOuterStructures )
|
||||||
InsetRect( &r , -3 , -3 ) ;
|
InsetRect( &r , -3 , -3 ) ;
|
||||||
RectRgn( visRgn , &r ) ;
|
RectRgn( visRgn , &r ) ;
|
||||||
|
|
||||||
if ( !IsTopLevel() )
|
if ( !IsTopLevel() )
|
||||||
{
|
{
|
||||||
wxWindow* child = this ;
|
wxWindow* child = this ;
|
||||||
@@ -2716,50 +2752,25 @@ void wxWindowMac::MacCreateScrollBars( long style )
|
|||||||
{
|
{
|
||||||
wxASSERT_MSG( m_vScrollBar == NULL && m_hScrollBar == NULL , wxT("attempt to create window twice") ) ;
|
wxASSERT_MSG( m_vScrollBar == NULL && m_hScrollBar == NULL , wxT("attempt to create window twice") ) ;
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
bool hasBoth = ( style & wxVSCROLL ) && ( style & wxHSCROLL ) ;
|
|
||||||
int adjust = hasBoth ? MAC_SCROLLBAR_SIZE - 1: 0 ;
|
|
||||||
int width, height ;
|
|
||||||
GetClientSize( &width , &height ) ;
|
|
||||||
|
|
||||||
wxPoint vPoint(width-MAC_SCROLLBAR_SIZE, 0) ;
|
|
||||||
wxSize vSize(MAC_SCROLLBAR_SIZE, height - adjust) ;
|
|
||||||
wxPoint hPoint(0 , height-MAC_SCROLLBAR_SIZE ) ;
|
|
||||||
wxSize hSize( width - adjust, MAC_SCROLLBAR_SIZE) ;
|
|
||||||
|
|
||||||
m_vScrollBar = new wxScrollBar(this, wxWINDOW_VSCROLL, vPoint,
|
|
||||||
vSize , wxVERTICAL);
|
|
||||||
|
|
||||||
if ( style & wxVSCROLL )
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_vScrollBar->Show(false) ;
|
|
||||||
}
|
|
||||||
m_hScrollBar = new wxScrollBar(this, wxWINDOW_HSCROLL, hPoint,
|
|
||||||
hSize , wxHORIZONTAL);
|
|
||||||
if ( style & wxHSCROLL )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_hScrollBar->Show(false) ;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if ( style & ( wxVSCROLL | wxHSCROLL ) )
|
if ( style & ( wxVSCROLL | wxHSCROLL ) )
|
||||||
{
|
{
|
||||||
bool hasBoth = ( style & wxVSCROLL ) && ( style & wxHSCROLL ) ;
|
bool hasBoth = ( style & wxVSCROLL ) && ( style & wxHSCROLL ) ;
|
||||||
int adjust = hasBoth ? MAC_SCROLLBAR_SIZE - 1: 0 ;
|
int scrlsize = MAC_SCROLLBAR_SIZE ;
|
||||||
|
wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL ;
|
||||||
|
if ( GetWindowVariant() == wxWINDOW_VARIANT_SMALL || GetWindowVariant() == wxWINDOW_VARIANT_MINI )
|
||||||
|
{
|
||||||
|
scrlsize = MAC_SMALL_SCROLLBAR_SIZE ;
|
||||||
|
variant = wxWINDOW_VARIANT_SMALL ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int adjust = hasBoth ? scrlsize - 1: 0 ;
|
||||||
int width, height ;
|
int width, height ;
|
||||||
GetClientSize( &width , &height ) ;
|
GetClientSize( &width , &height ) ;
|
||||||
|
|
||||||
wxPoint vPoint(width-MAC_SCROLLBAR_SIZE, 0) ;
|
wxPoint vPoint(width-scrlsize, 0) ;
|
||||||
wxSize vSize(MAC_SCROLLBAR_SIZE, height - adjust) ;
|
wxSize vSize(scrlsize, height - adjust) ;
|
||||||
wxPoint hPoint(0 , height-MAC_SCROLLBAR_SIZE ) ;
|
wxPoint hPoint(0 , height-scrlsize ) ;
|
||||||
wxSize hSize( width - adjust, MAC_SCROLLBAR_SIZE) ;
|
wxSize hSize( width - adjust, scrlsize) ;
|
||||||
|
|
||||||
|
|
||||||
if ( style & wxVSCROLL )
|
if ( style & wxVSCROLL )
|
||||||
@@ -2774,7 +2785,6 @@ void wxWindowMac::MacCreateScrollBars( long style )
|
|||||||
hSize , wxHORIZONTAL);
|
hSize , wxHORIZONTAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// because the create does not take into account the client area origin
|
// because the create does not take into account the client area origin
|
||||||
@@ -2787,7 +2797,8 @@ void wxWindowMac::MacRepositionScrollBars()
|
|||||||
return ;
|
return ;
|
||||||
|
|
||||||
bool hasBoth = ( m_hScrollBar && m_hScrollBar->IsShown()) && ( m_vScrollBar && m_vScrollBar->IsShown()) ;
|
bool hasBoth = ( m_hScrollBar && m_hScrollBar->IsShown()) && ( m_vScrollBar && m_vScrollBar->IsShown()) ;
|
||||||
int adjust = hasBoth ? MAC_SCROLLBAR_SIZE - 1 : 0 ;
|
int scrlsize = m_hScrollBar ? m_hScrollBar->GetSize().y : ( m_vScrollBar ? m_vScrollBar->GetSize().x : MAC_SCROLLBAR_SIZE ) ;
|
||||||
|
int adjust = hasBoth ? scrlsize - 1 : 0 ;
|
||||||
|
|
||||||
// get real client area
|
// get real client area
|
||||||
|
|
||||||
@@ -2802,7 +2813,7 @@ void wxWindowMac::MacRepositionScrollBars()
|
|||||||
wxSize vSize(MAC_SCROLLBAR_SIZE, height - adjust) ;
|
wxSize vSize(MAC_SCROLLBAR_SIZE, height - adjust) ;
|
||||||
wxPoint hPoint(0 , height-MAC_SCROLLBAR_SIZE ) ;
|
wxPoint hPoint(0 , height-MAC_SCROLLBAR_SIZE ) ;
|
||||||
wxSize hSize( width - adjust, MAC_SCROLLBAR_SIZE) ;
|
wxSize hSize( width - adjust, MAC_SCROLLBAR_SIZE) ;
|
||||||
|
/*
|
||||||
int x = 0 ;
|
int x = 0 ;
|
||||||
int y = 0 ;
|
int y = 0 ;
|
||||||
int w ;
|
int w ;
|
||||||
@@ -2848,7 +2859,7 @@ void wxWindowMac::MacRepositionScrollBars()
|
|||||||
vSize.y += 1 ;
|
vSize.y += 1 ;
|
||||||
hPoint.y += 1 ;
|
hPoint.y += 1 ;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if ( m_vScrollBar )
|
if ( m_vScrollBar )
|
||||||
{
|
{
|
||||||
m_vScrollBar->SetSize( vPoint.x , vPoint.y, vSize.x, vSize.y , wxSIZE_ALLOW_MINUS_ONE);
|
m_vScrollBar->SetSize( vPoint.x , vPoint.y, vSize.x, vSize.y , wxSIZE_ALLOW_MINUS_ONE);
|
||||||
|
Reference in New Issue
Block a user