we are always compositing on the supported OS versions

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2006-08-11 04:23:39 +00:00
parent e779b60938
commit f21449aead

View File

@@ -409,7 +409,7 @@ ControlRef wxMacFindSubControl( wxTopLevelWindowMac* toplevelWindow, const Point
{ {
Point testLocation = location ; Point testLocation = location ;
if ( toplevelWindow && toplevelWindow->MacUsesCompositing() ) if ( toplevelWindow )
{ {
testLocation.h -= r.left ; testLocation.h -= r.left ;
testLocation.v -= r.top ; testLocation.v -= r.top ;
@@ -430,7 +430,7 @@ ControlRef wxMacFindSubControl( wxTopLevelWindowMac* toplevelWindow, const Point
ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow , const Point& location , WindowRef window , ControlPartCode *outPart ) ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow , const Point& location , WindowRef window , ControlPartCode *outPart )
{ {
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
if ( UMAGetSystemVersion() >= 0x1030 && ( toplevelWindow == 0 || toplevelWindow->MacUsesCompositing() ) ) if ( UMAGetSystemVersion() >= 0x1030 )
return FindControlUnderMouse( location , window , outPart ) ; return FindControlUnderMouse( location , window , outPart ) ;
#endif #endif
@@ -612,7 +612,6 @@ pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , Ev
EventModifiers modifiers = cEvent.GetParameter<EventModifiers>(kEventParamKeyModifiers, typeUInt32) ; EventModifiers modifiers = cEvent.GetParameter<EventModifiers>(kEventParamKeyModifiers, typeUInt32) ;
Point clickLocation = windowMouseLocation ; Point clickLocation = windowMouseLocation ;
if ( toplevelWindow->MacUsesCompositing() )
currentMouseWindow->MacRootWindowToWindow( &clickLocation.h , &clickLocation.v ) ; currentMouseWindow->MacRootWindowToWindow( &clickLocation.h , &clickLocation.v ) ;
HandleControlClick( (ControlRef) currentMouseWindow->GetHandle() , clickLocation , HandleControlClick( (ControlRef) currentMouseWindow->GetHandle() , clickLocation ,
@@ -658,15 +657,12 @@ pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , Ev
EventModifiers modifiers = cEvent.GetParameter<EventModifiers>(kEventParamKeyModifiers, typeUInt32) ; EventModifiers modifiers = cEvent.GetParameter<EventModifiers>(kEventParamKeyModifiers, typeUInt32) ;
Point clickLocation = windowMouseLocation ; Point clickLocation = windowMouseLocation ;
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
if ( toplevelWindow->MacUsesCompositing() )
{
HIPoint hiPoint ; HIPoint hiPoint ;
hiPoint.x = clickLocation.h ; hiPoint.x = clickLocation.h ;
hiPoint.y = clickLocation.v ; hiPoint.y = clickLocation.v ;
HIViewConvertPoint( &hiPoint , (ControlRef) toplevelWindow->GetHandle() , control ) ; HIViewConvertPoint( &hiPoint , (ControlRef) toplevelWindow->GetHandle() , control ) ;
clickLocation.h = (int)hiPoint.x ; clickLocation.h = (int)hiPoint.x ;
clickLocation.v = (int)hiPoint.y ; clickLocation.v = (int)hiPoint.y ;
}
#endif // TARGET_API_MAC_OSX #endif // TARGET_API_MAC_OSX
HandleControlClick( control , clickLocation , modifiers , (ControlActionUPP ) -1 ) ; HandleControlClick( control , clickLocation , modifiers , (ControlActionUPP ) -1 ) ;
@@ -897,12 +893,6 @@ void wxTopLevelWindowMac::Init()
m_maximizeOnShow = false; m_maximizeOnShow = false;
m_macWindow = NULL ; m_macWindow = NULL ;
#if TARGET_API_MAC_OSX
m_macUsesCompositing = ( UMAGetSystemVersion() >= 0x1030 );
#else
m_macUsesCompositing = false;
#endif
m_macEventHandler = NULL ; m_macEventHandler = NULL ;
m_macFullScreenData = NULL ; m_macFullScreenData = NULL ;
} }
@@ -990,22 +980,6 @@ wxTopLevelWindowMac::~wxTopLevelWindowMac()
void wxTopLevelWindowMac::Maximize(bool maximize) void wxTopLevelWindowMac::Maximize(bool maximize)
{ {
// TODO: check if this is still necessary
#if 0
wxMacPortStateHelper help( (GrafPtr)GetWindowPort( (WindowRef)m_macWindow) ) ;
wxMacWindowClipper clip( this );
#endif
#if 0
if ( !IsWindowInStandardState( (WindowRef)m_macWindow, NULL, NULL ) )
{
Rect rect;
GetWindowBounds((WindowRef)m_macWindow, kWindowGlobalPortRgn, &rect);
SetWindowIdealUserState((WindowRef)m_macWindow, &rect);
SetWindowUserState((WindowRef)m_macWindow, &rect);
}
ZoomWindow( (WindowRef)m_macWindow , maximize ? inZoomOut : inZoomIn , false ) ;
#else
Point idealSize = { 0 , 0 } ; Point idealSize = { 0 , 0 } ;
if ( maximize ) if ( maximize )
{ {
@@ -1015,7 +989,6 @@ void wxTopLevelWindowMac::Maximize(bool maximize)
idealSize.v = rect.bottom - rect.top ; idealSize.v = rect.bottom - rect.top ;
} }
ZoomWindowIdeal( (WindowRef)m_macWindow , maximize ? inZoomOut : inZoomIn , &idealSize ) ; ZoomWindowIdeal( (WindowRef)m_macWindow , maximize ? inZoomOut : inZoomIn , &idealSize ) ;
#endif
} }
bool wxTopLevelWindowMac::IsMaximized() const bool wxTopLevelWindowMac::IsMaximized() const
@@ -1141,8 +1114,6 @@ void wxTopLevelWindowMac::MacCreateRealWindow(
else if ( HasFlag( wxFRAME_DRAWER ) ) else if ( HasFlag( wxFRAME_DRAWER ) )
{ {
wclass = kDrawerWindowClass; wclass = kDrawerWindowClass;
// we must force compositing on a drawer
m_macUsesCompositing = true ;
} }
#endif //10.2 and up #endif //10.2 and up
else else
@@ -1180,12 +1151,9 @@ void wxTopLevelWindowMac::MacCreateRealWindow(
if ( HasFlag(wxSTAY_ON_TOP) ) if ( HasFlag(wxSTAY_ON_TOP) )
group = GetWindowGroupOfClass(kUtilityWindowClass) ; group = GetWindowGroupOfClass(kUtilityWindowClass) ;
#if TARGET_API_MAC_OSX
if ( m_macUsesCompositing )
attr |= kWindowCompositingAttribute; attr |= kWindowCompositingAttribute;
#if 0 // wxMAC_USE_CORE_GRAPHICS ; TODO : decide on overall handling of high dpi screens (pixel vs userscale) #if 0 // wxMAC_USE_CORE_GRAPHICS ; TODO : decide on overall handling of high dpi screens (pixel vs userscale)
attr |= kWindowFrameworkScaledAttribute; attr |= kWindowFrameworkScaledAttribute;
#endif
#endif #endif
if ( HasFlag(wxFRAME_SHAPED) ) if ( HasFlag(wxFRAME_SHAPED) )
@@ -1216,9 +1184,6 @@ void wxTopLevelWindowMac::MacCreateRealWindow(
UMASetWTitle( (WindowRef) m_macWindow , title , m_font.GetEncoding() ) ; UMASetWTitle( (WindowRef) m_macWindow , title , m_font.GetEncoding() ) ;
m_peer = new wxMacControl(this , true /*isRootControl*/) ; m_peer = new wxMacControl(this , true /*isRootControl*/) ;
#if TARGET_API_MAC_OSX
if ( m_macUsesCompositing )
{
// There is a bug in 10.2.X for ::GetRootControl returning the window view instead of // There is a bug in 10.2.X for ::GetRootControl returning the window view instead of
// the content view, so we have to retrieve it explicitly // the content view, so we have to retrieve it explicitly
HIViewFindByID( HIViewGetRoot( (WindowRef) m_macWindow ) , kHIViewWindowContentID , HIViewFindByID( HIViewGetRoot( (WindowRef) m_macWindow ) , kHIViewWindowContentID ,
@@ -1228,11 +1193,6 @@ void wxTopLevelWindowMac::MacCreateRealWindow(
// compatibility mode fallback // compatibility mode fallback
GetRootControl( (WindowRef) m_macWindow , m_peer->GetControlRefAddr() ) ; GetRootControl( (WindowRef) m_macWindow , m_peer->GetControlRefAddr() ) ;
} }
}
#endif
{
::CreateRootControl( (WindowRef)m_macWindow , m_peer->GetControlRefAddr() ) ;
}
// the root control level handler // the root control level handler
MacInstallEventHandler( (WXWidget) m_peer->GetControlRef() ) ; MacInstallEventHandler( (WXWidget) m_peer->GetControlRef() ) ;
@@ -1456,7 +1416,7 @@ void wxTopLevelWindowMac::SetExtraStyle(long exStyle)
wxTopLevelWindowBase::SetExtraStyle( exStyle ) ; wxTopLevelWindowBase::SetExtraStyle( exStyle ) ;
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
if ( m_macUsesCompositing && m_macWindow != NULL ) if ( m_macWindow != NULL )
{ {
bool metal = GetExtraStyle() & wxFRAME_EX_METAL ; bool metal = GetExtraStyle() & wxFRAME_EX_METAL ;
if ( MacGetMetalAppearance() != metal ) if ( MacGetMetalAppearance() != metal )
@@ -1528,9 +1488,6 @@ void wxTopLevelWindowMac::DoGetClientSize( int *width, int *height ) const
void wxTopLevelWindowMac::MacSetMetalAppearance( bool set ) void wxTopLevelWindowMac::MacSetMetalAppearance( bool set )
{ {
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
wxASSERT_MSG( m_macUsesCompositing ,
wxT("Cannot set metal appearance on a non-compositing window") ) ;
MacChangeWindowAttributes( set ? kWindowMetalAttribute : kWindowNoAttributes , MacChangeWindowAttributes( set ? kWindowMetalAttribute : kWindowNoAttributes ,
set ? kWindowNoAttributes : kWindowMetalAttribute ) ; set ? kWindowNoAttributes : kWindowMetalAttribute ) ;
#endif #endif
@@ -1560,9 +1517,6 @@ wxUint32 wxTopLevelWindowMac::MacGetWindowAttributes() const
void wxTopLevelWindowMac::MacPerformUpdates() void wxTopLevelWindowMac::MacPerformUpdates()
{ {
#if TARGET_API_MAC_OSX
if ( m_macUsesCompositing )
{
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3 #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
// for composited windows this also triggers a redraw of all // for composited windows this also triggers a redraw of all
// invalid views in the window // invalid views in the window
@@ -1591,27 +1545,6 @@ void wxTopLevelWindowMac::MacPerformUpdates()
status = ReceiveNextEvent( 0 , NULL , kEventDurationNoWait , false , &theEvent ) ; status = ReceiveNextEvent( 0 , NULL , kEventDurationNoWait , false , &theEvent ) ;
} }
} }
}
else
#endif
{
BeginUpdate( (WindowRef) m_macWindow ) ;
RgnHandle updateRgn = NewRgn();
if ( updateRgn )
{
GetPortVisibleRegion( GetWindowPort( (WindowRef)m_macWindow ), updateRgn );
UpdateControls( (WindowRef)m_macWindow , updateRgn ) ;
// if ( !EmptyRgn( updateRgn ) )
// MacDoRedraw( updateRgn , 0 , true) ;
DisposeRgn( updateRgn );
}
EndUpdate( (WindowRef)m_macWindow ) ;
QDFlushPortBuffer( GetWindowPort( (WindowRef)m_macWindow ) , NULL ) ;
}
} }
// Attracts the users attention to this window if the application is // Attracts the users attention to this window if the application is