carbon cfm fixes, factoring code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32318 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -265,13 +265,17 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
|
|||||||
case kEventControlHiliteChanged :
|
case kEventControlHiliteChanged :
|
||||||
thisWindow->MacHiliteChanged() ;
|
thisWindow->MacHiliteChanged() ;
|
||||||
break ;
|
break ;
|
||||||
|
#endif
|
||||||
|
// we emulate this event under Carbon CFM
|
||||||
case kEventControlSetFocusPart :
|
case kEventControlSetFocusPart :
|
||||||
{
|
{
|
||||||
Boolean focusEverything = false ;
|
Boolean focusEverything = false ;
|
||||||
ControlPartCode controlPart = cEvent.GetParameter<ControlPartCode>(kEventParamControlPart , typeControlPartCode );
|
ControlPartCode controlPart = cEvent.GetParameter<ControlPartCode>(kEventParamControlPart , typeControlPartCode );
|
||||||
|
#ifdef __WXMAC_OSX__
|
||||||
if ( cEvent.GetParameter<Boolean>(kEventParamControlFocusEverything , &focusEverything ) == noErr )
|
if ( cEvent.GetParameter<Boolean>(kEventParamControlFocusEverything , &focusEverything ) == noErr )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if ( controlPart == kControlFocusNoPart )
|
if ( controlPart == kControlFocusNoPart )
|
||||||
{
|
{
|
||||||
#if wxUSE_CARET
|
#if wxUSE_CARET
|
||||||
@@ -305,7 +309,6 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
|
|||||||
result = noErr ;
|
result = noErr ;
|
||||||
}
|
}
|
||||||
break ;
|
break ;
|
||||||
#endif
|
|
||||||
case kEventControlHit :
|
case kEventControlHit :
|
||||||
{
|
{
|
||||||
result = thisWindow->MacControlHit( handler , event ) ;
|
result = thisWindow->MacControlHit( handler , event ) ;
|
||||||
@@ -753,38 +756,7 @@ wxWindowMac::~wxWindowMac()
|
|||||||
|
|
||||||
m_isBeingDeleted = TRUE;
|
m_isBeingDeleted = TRUE;
|
||||||
|
|
||||||
if ( m_peer )
|
MacInvalidateBorders() ;
|
||||||
{
|
|
||||||
// deleting a window while it is shown invalidates the region occupied by border or
|
|
||||||
// focus
|
|
||||||
int outerBorder = MacGetLeftBorderSize() ;
|
|
||||||
if ( m_peer->NeedsFocusRect() && m_peer->HasFocus() )
|
|
||||||
outerBorder += 4 ;
|
|
||||||
|
|
||||||
if ( IsShown() && ( outerBorder > 0 ) )
|
|
||||||
{
|
|
||||||
// as the borders are drawn on the parent we have to properly invalidate all these areas
|
|
||||||
RgnHandle updateInner = NewRgn() , updateOuter = NewRgn() , updateTotal = NewRgn() ;
|
|
||||||
|
|
||||||
Rect rect ;
|
|
||||||
|
|
||||||
m_peer->GetRect( &rect ) ;
|
|
||||||
RectRgn( updateInner , &rect ) ;
|
|
||||||
InsetRect( &rect , -outerBorder , -outerBorder ) ;
|
|
||||||
RectRgn( updateOuter , &rect ) ;
|
|
||||||
DiffRgn( updateOuter , updateInner ,updateOuter ) ;
|
|
||||||
wxPoint parent(0,0);
|
|
||||||
GetParent()->MacWindowToRootWindow( &parent.x , &parent.y ) ;
|
|
||||||
parent -= GetParent()->GetClientAreaOrigin() ;
|
|
||||||
OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
|
|
||||||
CopyRgn( updateOuter , updateTotal ) ;
|
|
||||||
|
|
||||||
GetParent()->m_peer->SetNeedsDisplay( true , updateTotal ) ;
|
|
||||||
DisposeRgn(updateOuter) ;
|
|
||||||
DisposeRgn(updateInner) ;
|
|
||||||
DisposeRgn(updateTotal) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef __WXUNIVERSAL__
|
#ifndef __WXUNIVERSAL__
|
||||||
// VS: make sure there's no wxFrame with last focus set to us:
|
// VS: make sure there's no wxFrame with last focus set to us:
|
||||||
@@ -903,7 +875,7 @@ bool wxWindowMac::Create(wxWindowMac *parent, wxWindowID id,
|
|||||||
// | kControlWantsIdle
|
// | kControlWantsIdle
|
||||||
;
|
;
|
||||||
|
|
||||||
m_peer = new wxMacControl() ;
|
m_peer = new wxMacControl(this) ;
|
||||||
::CreateUserPaneControl( MAC_WXHWND(GetParent()->MacGetTopLevelWindowRef()) , &bounds, features , m_peer->GetControlRefAddr() );
|
::CreateUserPaneControl( MAC_WXHWND(GetParent()->MacGetTopLevelWindowRef()) , &bounds, features , m_peer->GetControlRefAddr() );
|
||||||
|
|
||||||
|
|
||||||
@@ -1347,7 +1319,6 @@ void wxWindowMac::MacRootWindowToClient( int *x , int *y ) const
|
|||||||
|
|
||||||
void wxWindowMac::MacWindowToRootWindow( int *x , int *y ) const
|
void wxWindowMac::MacWindowToRootWindow( int *x , int *y ) const
|
||||||
{
|
{
|
||||||
#if TARGET_API_MAC_OSX
|
|
||||||
wxPoint pt ;
|
wxPoint pt ;
|
||||||
if ( x ) pt.x = *x ;
|
if ( x ) pt.x = *x ;
|
||||||
if ( y ) pt.y = *y ;
|
if ( y ) pt.y = *y ;
|
||||||
@@ -1365,15 +1336,6 @@ void wxWindowMac::MacWindowToRootWindow( int *x , int *y ) const
|
|||||||
|
|
||||||
if ( x ) *x = (int) pt.x ;
|
if ( x ) *x = (int) pt.x ;
|
||||||
if ( y ) *y = (int) pt.y ;
|
if ( y ) *y = (int) pt.y ;
|
||||||
#else
|
|
||||||
if ( !IsTopLevel() )
|
|
||||||
{
|
|
||||||
Rect bounds ;
|
|
||||||
m_peer->GetRect( &bounds ) ;
|
|
||||||
if(x) *x += bounds.left - MacGetLeftBorderSize() ;
|
|
||||||
if(y) *y += bounds.top - MacGetTopBorderSize() ;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindowMac::MacWindowToRootWindow( short *x , short *y ) const
|
void wxWindowMac::MacWindowToRootWindow( short *x , short *y ) const
|
||||||
@@ -1388,7 +1350,6 @@ void wxWindowMac::MacWindowToRootWindow( short *x , short *y ) const
|
|||||||
|
|
||||||
void wxWindowMac::MacRootWindowToWindow( int *x , int *y ) const
|
void wxWindowMac::MacRootWindowToWindow( int *x , int *y ) const
|
||||||
{
|
{
|
||||||
#if TARGET_API_MAC_OSX
|
|
||||||
wxPoint pt ;
|
wxPoint pt ;
|
||||||
if ( x ) pt.x = *x ;
|
if ( x ) pt.x = *x ;
|
||||||
if ( y ) pt.y = *y ;
|
if ( y ) pt.y = *y ;
|
||||||
@@ -1402,15 +1363,6 @@ void wxWindowMac::MacRootWindowToWindow( int *x , int *y ) const
|
|||||||
|
|
||||||
if ( x ) *x = (int) pt.x ;
|
if ( x ) *x = (int) pt.x ;
|
||||||
if ( y ) *y = (int) pt.y ;
|
if ( y ) *y = (int) pt.y ;
|
||||||
#else
|
|
||||||
if ( !IsTopLevel() )
|
|
||||||
{
|
|
||||||
Rect bounds ;
|
|
||||||
m_peer->GetRect( &bounds ) ;
|
|
||||||
if(x) *x -= bounds.left + MacGetLeftBorderSize() ;
|
|
||||||
if(y) *y -= bounds.top + MacGetTopBorderSize() ;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindowMac::MacRootWindowToWindow( short *x , short *y ) const
|
void wxWindowMac::MacRootWindowToWindow( short *x , short *y ) const
|
||||||
@@ -1668,6 +1620,138 @@ void wxWindowMac::DoSetToolTip(wxToolTip *tooltip)
|
|||||||
|
|
||||||
#endif // wxUSE_TOOLTIPS
|
#endif // wxUSE_TOOLTIPS
|
||||||
|
|
||||||
|
void wxWindowMac::MacInvalidateBorders()
|
||||||
|
{
|
||||||
|
if ( m_peer == NULL )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
bool vis = MacIsReallyShown() ;
|
||||||
|
if ( !vis )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
int outerBorder = MacGetLeftBorderSize() ;
|
||||||
|
if ( m_peer->NeedsFocusRect() && m_peer->HasFocus() )
|
||||||
|
outerBorder += 4 ;
|
||||||
|
|
||||||
|
if ( outerBorder == 0 )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
// now we know that we have something to do at all
|
||||||
|
|
||||||
|
// as the borders are drawn on the parent we have to properly invalidate all these areas
|
||||||
|
RgnHandle updateInner = NewRgn() ,
|
||||||
|
updateOuter = NewRgn() ;
|
||||||
|
|
||||||
|
// this rectangle is in HIViewCoordinates under OSX and in Window Coordinates under Carbon
|
||||||
|
Rect rect ;
|
||||||
|
m_peer->GetRect( &rect ) ;
|
||||||
|
RectRgn( updateInner , &rect ) ;
|
||||||
|
InsetRect( &rect , -outerBorder , -outerBorder ) ;
|
||||||
|
RectRgn( updateOuter , &rect ) ;
|
||||||
|
DiffRgn( updateOuter , updateInner ,updateOuter ) ;
|
||||||
|
#ifdef __WXMAC_OSX__
|
||||||
|
GetParent()->m_peer->SetNeedsDisplay( true , updateOuter ) ;
|
||||||
|
#else
|
||||||
|
WindowRef tlw = (WindowRef) MacGetTopLevelWindowRef() ;
|
||||||
|
if ( tlw )
|
||||||
|
InvalWindowRgn( tlw , updateOuter ) ;
|
||||||
|
#endif
|
||||||
|
DisposeRgn(updateOuter) ;
|
||||||
|
DisposeRgn(updateInner) ;
|
||||||
|
/*
|
||||||
|
RgnHandle updateInner = NewRgn() , updateOuter = NewRgn() ;
|
||||||
|
RectRgn( updateInner , &rect ) ;
|
||||||
|
InsetRect( &rect , -4 , -4 ) ;
|
||||||
|
RectRgn( updateOuter , &rect ) ;
|
||||||
|
DiffRgn( updateOuter , updateInner ,updateOuter ) ;
|
||||||
|
wxPoint parent(0,0);
|
||||||
|
GetParent()->MacWindowToRootWindow( &parent.x , &parent.y ) ;
|
||||||
|
parent -= GetParent()->GetClientAreaOrigin() ;
|
||||||
|
OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
|
||||||
|
GetParent()->m_peer->SetNeedsDisplay( true , updateOuter ) ;
|
||||||
|
DisposeRgn(updateOuter) ;
|
||||||
|
DisposeRgn(updateInner) ;
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
if ( m_peer )
|
||||||
|
{
|
||||||
|
// deleting a window while it is shown invalidates the region occupied by border or
|
||||||
|
// focus
|
||||||
|
|
||||||
|
if ( IsShown() && ( outerBorder > 0 ) )
|
||||||
|
{
|
||||||
|
// as the borders are drawn on the parent we have to properly invalidate all these areas
|
||||||
|
RgnHandle updateInner = NewRgn() , updateOuter = NewRgn() , updateTotal = NewRgn() ;
|
||||||
|
|
||||||
|
Rect rect ;
|
||||||
|
|
||||||
|
m_peer->GetRect( &rect ) ;
|
||||||
|
RectRgn( updateInner , &rect ) ;
|
||||||
|
InsetRect( &rect , -outerBorder , -outerBorder ) ;
|
||||||
|
RectRgn( updateOuter , &rect ) ;
|
||||||
|
DiffRgn( updateOuter , updateInner ,updateOuter ) ;
|
||||||
|
wxPoint parent(0,0);
|
||||||
|
GetParent()->MacWindowToRootWindow( &parent.x , &parent.y ) ;
|
||||||
|
parent -= GetParent()->GetClientAreaOrigin() ;
|
||||||
|
OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
|
||||||
|
CopyRgn( updateOuter , updateTotal ) ;
|
||||||
|
|
||||||
|
GetParent()->m_peer->SetNeedsDisplay( true , updateTotal ) ;
|
||||||
|
DisposeRgn(updateOuter) ;
|
||||||
|
DisposeRgn(updateInner) ;
|
||||||
|
DisposeRgn(updateTotal) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
#if 0
|
||||||
|
Rect r = wxMacGetBoundsForControl(this , wxPoint( actualX,actualY), wxSize( actualWidth, actualHeight ) , false ) ;
|
||||||
|
|
||||||
|
int outerBorder = MacGetLeftBorderSize() ;
|
||||||
|
if ( m_peer->NeedsFocusRect() && m_peer->HasFocus() )
|
||||||
|
outerBorder += 4 ;
|
||||||
|
|
||||||
|
if ( vis && ( outerBorder > 0 ) )
|
||||||
|
{
|
||||||
|
// as the borders are drawn on the parent we have to properly invalidate all these areas
|
||||||
|
RgnHandle updateInner = NewRgn() , updateOuter = NewRgn() , updateTotal = NewRgn() ;
|
||||||
|
|
||||||
|
Rect rect ;
|
||||||
|
|
||||||
|
m_peer->GetRect( &rect ) ;
|
||||||
|
RectRgn( updateInner , &rect ) ;
|
||||||
|
InsetRect( &rect , -outerBorder , -outerBorder ) ;
|
||||||
|
RectRgn( updateOuter , &rect ) ;
|
||||||
|
DiffRgn( updateOuter , updateInner ,updateOuter ) ;
|
||||||
|
/*
|
||||||
|
wxPoint parent(0,0);
|
||||||
|
#if TARGET_API_MAC_OSX
|
||||||
|
// no offsetting needed when compositing
|
||||||
|
#else
|
||||||
|
GetParent()->MacWindowToRootWindow( &parent.x , &parent.y ) ;
|
||||||
|
parent -= GetParent()->GetClientAreaOrigin() ;
|
||||||
|
OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
CopyRgn( updateOuter , updateTotal ) ;
|
||||||
|
|
||||||
|
rect = r ;
|
||||||
|
RectRgn( updateInner , &rect ) ;
|
||||||
|
InsetRect( &rect , -outerBorder , -outerBorder ) ;
|
||||||
|
RectRgn( updateOuter , &rect ) ;
|
||||||
|
DiffRgn( updateOuter , updateInner ,updateOuter ) ;
|
||||||
|
/*
|
||||||
|
OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
|
||||||
|
*/
|
||||||
|
UnionRgn( updateOuter , updateTotal , updateTotal ) ;
|
||||||
|
|
||||||
|
GetParent()->m_peer->SetNeedsDisplay( true , updateTotal ) ;
|
||||||
|
DisposeRgn(updateOuter) ;
|
||||||
|
DisposeRgn(updateInner) ;
|
||||||
|
DisposeRgn(updateTotal) ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
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
|
// this is never called for a toplevel window, so we know we have a parent
|
||||||
@@ -1715,48 +1799,9 @@ 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 ) ;
|
||||||
bool vis = m_peer->IsVisible();
|
bool vis = MacIsReallyShown() ;
|
||||||
|
|
||||||
int outerBorder = MacGetLeftBorderSize() ;
|
MacInvalidateBorders() ;
|
||||||
if ( m_peer->NeedsFocusRect() && m_peer->HasFocus() )
|
|
||||||
outerBorder += 4 ;
|
|
||||||
|
|
||||||
if ( vis && ( outerBorder > 0 ) )
|
|
||||||
{
|
|
||||||
// as the borders are drawn on the parent we have to properly invalidate all these areas
|
|
||||||
RgnHandle updateInner = NewRgn() , updateOuter = NewRgn() , updateTotal = NewRgn() ;
|
|
||||||
|
|
||||||
Rect rect ;
|
|
||||||
|
|
||||||
m_peer->GetRect( &rect ) ;
|
|
||||||
RectRgn( updateInner , &rect ) ;
|
|
||||||
InsetRect( &rect , -outerBorder , -outerBorder ) ;
|
|
||||||
RectRgn( updateOuter , &rect ) ;
|
|
||||||
DiffRgn( updateOuter , updateInner ,updateOuter ) ;
|
|
||||||
wxPoint parent(0,0);
|
|
||||||
#if TARGET_API_MAC_OSX
|
|
||||||
// no offsetting needed when compositing
|
|
||||||
#else
|
|
||||||
GetParent()->MacWindowToRootWindow( &parent.x , &parent.y ) ;
|
|
||||||
parent -= GetParent()->GetClientAreaOrigin() ;
|
|
||||||
OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
|
|
||||||
#endif
|
|
||||||
CopyRgn( updateOuter , updateTotal ) ;
|
|
||||||
|
|
||||||
rect = r ;
|
|
||||||
RectRgn( updateInner , &rect ) ;
|
|
||||||
InsetRect( &rect , -outerBorder , -outerBorder ) ;
|
|
||||||
RectRgn( updateOuter , &rect ) ;
|
|
||||||
DiffRgn( updateOuter , updateInner ,updateOuter ) ;
|
|
||||||
|
|
||||||
OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
|
|
||||||
UnionRgn( updateOuter , updateTotal , updateTotal ) ;
|
|
||||||
|
|
||||||
GetParent()->m_peer->SetNeedsDisplay( true , updateTotal ) ;
|
|
||||||
DisposeRgn(updateOuter) ;
|
|
||||||
DisposeRgn(updateInner) ;
|
|
||||||
DisposeRgn(updateTotal) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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 !
|
||||||
if ( vis )
|
if ( vis )
|
||||||
@@ -1766,6 +1811,8 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height)
|
|||||||
if ( vis )
|
if ( vis )
|
||||||
m_peer->SetVisibility( true , true ) ;
|
m_peer->SetVisibility( true , true ) ;
|
||||||
|
|
||||||
|
MacInvalidateBorders() ;
|
||||||
|
|
||||||
MacRepositionScrollBars() ;
|
MacRepositionScrollBars() ;
|
||||||
if ( doMove )
|
if ( doMove )
|
||||||
{
|
{
|
||||||
@@ -2168,7 +2215,7 @@ void wxWindowMac::Refresh(bool eraseBack, const wxRect *rect)
|
|||||||
InvalWindowRgn( (WindowRef) MacGetTopLevelWindowRef() , updateRgn ) ;
|
InvalWindowRgn( (WindowRef) MacGetTopLevelWindowRef() , updateRgn ) ;
|
||||||
DisposeRgn(updateRgn) ;
|
DisposeRgn(updateRgn) ;
|
||||||
*/
|
*/
|
||||||
if ( m_peer->IsVisible())
|
if ( MacIsReallyShown() )
|
||||||
{
|
{
|
||||||
m_peer->SetVisibility( false , false ) ;
|
m_peer->SetVisibility( false , false ) ;
|
||||||
m_peer->SetVisibility( true , true ) ;
|
m_peer->SetVisibility( true , true ) ;
|
||||||
@@ -2420,6 +2467,8 @@ void wxWindowMac::MacPaintBorders( int leftOrigin , int rightOrigin )
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
#ifdef __WXMAC_OSX__
|
||||||
|
// as the non OSX Version is already working in window relative coordinates, it's not needed
|
||||||
wxTopLevelWindowMac* top = MacGetTopLevelWindow();
|
wxTopLevelWindowMac* top = MacGetTopLevelWindow();
|
||||||
if (top)
|
if (top)
|
||||||
{
|
{
|
||||||
@@ -2430,6 +2479,7 @@ void wxWindowMac::MacPaintBorders( int leftOrigin , int rightOrigin )
|
|||||||
rect.top += pt.y ;
|
rect.top += pt.y ;
|
||||||
rect.bottom += pt.y ;
|
rect.bottom += pt.y ;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (HasFlag(wxRAISED_BORDER) || HasFlag( wxSUNKEN_BORDER) || HasFlag(wxDOUBLE_BORDER) )
|
if (HasFlag(wxRAISED_BORDER) || HasFlag( wxSUNKEN_BORDER) || HasFlag(wxDOUBLE_BORDER) )
|
||||||
{
|
{
|
||||||
@@ -2680,13 +2730,22 @@ void wxWindowMac::OnSetFocus(wxFocusEvent& event)
|
|||||||
{
|
{
|
||||||
#if !wxMAC_USE_CORE_GRAPHICS
|
#if !wxMAC_USE_CORE_GRAPHICS
|
||||||
wxMacWindowStateSaver sv( this ) ;
|
wxMacWindowStateSaver sv( this ) ;
|
||||||
|
Rect rect ;
|
||||||
int w , h ;
|
m_peer->GetRect( &rect ) ;
|
||||||
int x , y ;
|
InsetRect( &rect, -MacGetLeftBorderSize() , -MacGetTopBorderSize() ) ;
|
||||||
x = y = 0 ;
|
#ifdef __WXMAC_OSX__
|
||||||
MacWindowToRootWindow( &x , &y ) ;
|
// as the non OSX Version is already working in window relative coordinates, it's not needed
|
||||||
GetSize( &w , &h ) ;
|
wxTopLevelWindowMac* top = MacGetTopLevelWindow();
|
||||||
Rect rect = {y , x , h + y , w + x } ;
|
if (top)
|
||||||
|
{
|
||||||
|
wxPoint pt(0,0) ;
|
||||||
|
wxMacControl::Convert( &pt , GetParent()->m_peer , top->m_peer ) ;
|
||||||
|
rect.left += pt.x ;
|
||||||
|
rect.right += pt.x ;
|
||||||
|
rect.top += pt.y ;
|
||||||
|
rect.bottom += pt.y ;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if ( event.GetEventType() == wxEVT_SET_FOCUS )
|
if ( event.GetEventType() == wxEVT_SET_FOCUS )
|
||||||
DrawThemeFocusRect( &rect , true ) ;
|
DrawThemeFocusRect( &rect , true ) ;
|
||||||
@@ -2697,18 +2756,7 @@ void wxWindowMac::OnSetFocus(wxFocusEvent& event)
|
|||||||
// as this erases part of the frame we have to redraw borders
|
// as this erases part of the frame we have to redraw borders
|
||||||
// and because our z-ordering is not always correct (staticboxes)
|
// and because our z-ordering is not always correct (staticboxes)
|
||||||
// we have to invalidate things, we cannot simple redraw
|
// we have to invalidate things, we cannot simple redraw
|
||||||
RgnHandle updateInner = NewRgn() , updateOuter = NewRgn() ;
|
MacInvalidateBorders() ;
|
||||||
RectRgn( updateInner , &rect ) ;
|
|
||||||
InsetRect( &rect , -4 , -4 ) ;
|
|
||||||
RectRgn( updateOuter , &rect ) ;
|
|
||||||
DiffRgn( updateOuter , updateInner ,updateOuter ) ;
|
|
||||||
wxPoint parent(0,0);
|
|
||||||
GetParent()->MacWindowToRootWindow( &parent.x , &parent.y ) ;
|
|
||||||
parent -= GetParent()->GetClientAreaOrigin() ;
|
|
||||||
OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
|
|
||||||
GetParent()->m_peer->SetNeedsDisplay( true , updateOuter ) ;
|
|
||||||
DisposeRgn(updateOuter) ;
|
|
||||||
DisposeRgn(updateInner) ;
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
GetParent()->Refresh() ;
|
GetParent()->Refresh() ;
|
||||||
@@ -2859,7 +2907,7 @@ wxRegion wxWindowMac::MacGetVisibleRegion( bool includeOuterStructures )
|
|||||||
Rect r ;
|
Rect r ;
|
||||||
RgnHandle visRgn = NewRgn() ;
|
RgnHandle visRgn = NewRgn() ;
|
||||||
RgnHandle tempRgn = NewRgn() ;
|
RgnHandle tempRgn = NewRgn() ;
|
||||||
if ( !m_isBeingDeleted && m_peer->IsVisible())
|
if ( !m_isBeingDeleted && MacIsReallyShown() /*m_peer->IsVisible() */ )
|
||||||
{
|
{
|
||||||
m_peer->GetRect( &r ) ;
|
m_peer->GetRect( &r ) ;
|
||||||
r.left -= MacGetLeftBorderSize() ;
|
r.left -= MacGetLeftBorderSize() ;
|
||||||
|
Reference in New Issue
Block a user