X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/355debca0650f70aa8ed4803b2ebc45541e03d9f..1f5cf9cc23f7763e9ee7984b171bb4b6a3ce3ffb:/src/mac/carbon/utils.cpp?ds=inline diff --git a/src/mac/carbon/utils.cpp b/src/mac/carbon/utils.cpp index a0ccab3f28..240161a190 100644 --- a/src/mac/carbon/utils.cpp +++ b/src/mac/carbon/utils.cpp @@ -16,14 +16,16 @@ #ifndef WX_PRECOMP #include "wx/intl.h" #include "wx/app.h" + #if wxUSE_GUI + #include "wx/toplevel.h" + #include "wx/font.h" + #endif #endif #include "wx/apptrait.h" #if wxUSE_GUI #include "wx/mac/uma.h" - #include "wx/font.h" - #include "wx/toplevel.h" #endif #include @@ -65,34 +67,27 @@ #endif #endif -// --------------------------------------------------------------------------- -// code used in both base and GUI compilation -// --------------------------------------------------------------------------- +#if wxUSE_BASE // our OS version is the same in non GUI and GUI cases -static int DoGetOSVersion(int *majorVsn, int *minorVsn) +wxOperatingSystemId wxGetOsVersion(int *majorVsn, int *minorVsn) { long theSystem; - - // are there x-platform conventions ? - Gestalt(gestaltSystemVersion, &theSystem); - if (minorVsn != NULL) - *minorVsn = (theSystem & 0xFF); - if (majorVsn != NULL) + if ( majorVsn != NULL ) *majorVsn = (theSystem >> 8); -#ifdef __DARWIN__ - return wxMAC_DARWIN; + if ( minorVsn != NULL ) + *minorVsn = (theSystem & 0xFF); + +#if defined( __DARWIN__ ) + return wxOS_MAC_OSX_DARWIN; #else - return wxMAC; + return wxOS_MAC_OS; #endif } - -#if wxUSE_BASE - // ---------------------------------------------------------------------------- // debugging support // ---------------------------------------------------------------------------- @@ -368,34 +363,17 @@ void wxBell() SysBeep(30); } -wxToolkitInfo& wxConsoleAppTraits::GetToolkitInfo() -{ - static wxToolkitInfo info; - - info.os = DoGetOSVersion(&info.versionMajor, &info.versionMinor); - info.name = _T("wxBase"); - - return info; -} #endif // wxUSE_BASE #if wxUSE_GUI -wxToolkitInfo& wxGUIAppTraits::GetToolkitInfo() +wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const { - static wxToolkitInfo info; - - info.os = DoGetOSVersion(&info.versionMajor, &info.versionMinor); - info.shortName = _T("mac"); - info.name = _T("wxMac"); - -#ifdef __WXUNIVERSAL__ - info.shortName << _T("univ"); - info.name << _T("/wxUniversal"); -#endif + // We suppose that toolkit version is the same as OS version under Mac + wxGetOsVersion(verMaj, verMin); - return info; + return wxPORT_MAC; } // Reading and writing resources (eg WIN.INI, .Xdefaults) @@ -818,14 +796,12 @@ wxMacControl::wxMacControl(wxWindow* peer , bool isRootControl ) Init(); m_peer = peer; m_isRootControl = isRootControl; - m_isCompositing = peer->MacGetTopLevelWindow()->MacUsesCompositing(); } wxMacControl::wxMacControl( wxWindow* peer , ControlRef control ) { Init(); m_peer = peer; - m_isCompositing = peer->MacGetTopLevelWindow()->MacUsesCompositing(); m_controlRef = control; } @@ -833,7 +809,6 @@ wxMacControl::wxMacControl( wxWindow* peer , WXWidget control ) { Init(); m_peer = peer; - m_isCompositing = peer->MacGetTopLevelWindow()->MacUsesCompositing(); m_controlRef = (ControlRef) control; } @@ -846,7 +821,6 @@ void wxMacControl::Init() m_peer = NULL; m_controlRef = NULL; m_needsFocusRect = false; - m_isCompositing = false; m_isRootControl = false; } @@ -1094,72 +1068,28 @@ bool wxMacControl::IsActive() const void wxMacControl::Enable( bool enable ) { -#if TARGET_API_MAC_OSX if ( enable ) EnableControl( m_controlRef ); else DisableControl( m_controlRef ); -#else - if ( enable ) - ActivateControl( m_controlRef ); - else - DeactivateControl( m_controlRef ); -#endif } void wxMacControl::SetDrawingEnabled( bool enable ) { -#if TARGET_API_MAC_OSX HIViewSetDrawingEnabled( m_controlRef , enable ); -#endif } -#if TARGET_API_MAC_OSX bool wxMacControl::GetNeedsDisplay() const { -#if TARGET_API_MAC_OSX - if ( m_isCompositing ) - { - return HIViewGetNeedsDisplay( m_controlRef ); - } - else -#endif - { - if ( !IsVisible() ) - return false; - - Rect controlBounds; - GetControlBounds( m_controlRef, &controlBounds ); - RgnHandle rgn = NewRgn(); - GetWindowRegion ( GetControlOwner( m_controlRef ) , kWindowUpdateRgn , rgn ); - Boolean intersect = RectInRgn ( &controlBounds , rgn ); - DisposeRgn( rgn ); - - return intersect; - } + return HIViewGetNeedsDisplay( m_controlRef ); } -#endif void wxMacControl::SetNeedsDisplay( RgnHandle where ) { if ( !IsVisible() ) return; -#if TARGET_API_MAC_OSX - if ( m_isCompositing ) - { - HIViewSetNeedsDisplayInRegion( m_controlRef , where , true ); - } - else -#endif - { - Rect controlBounds; - GetControlBounds( m_controlRef, &controlBounds ); - RgnHandle update = NewRgn(); - CopyRgn( where , update ); - OffsetRgn( update , controlBounds.left , controlBounds.top ); - InvalWindowRgn( GetControlOwner( m_controlRef) , update ); - } + HIViewSetNeedsDisplayInRegion( m_controlRef , where , true ); } void wxMacControl::SetNeedsDisplay( Rect* where ) @@ -1167,133 +1097,41 @@ void wxMacControl::SetNeedsDisplay( Rect* where ) if ( !IsVisible() ) return; -#if TARGET_API_MAC_OSX - if ( m_isCompositing ) + if ( where != NULL ) { - if ( where != NULL ) - { - RgnHandle update = NewRgn(); - RectRgn( update , where ); - HIViewSetNeedsDisplayInRegion( m_controlRef , update , true ); - DisposeRgn( update ); - } - else - HIViewSetNeedsDisplay( m_controlRef , true ); + RgnHandle update = NewRgn(); + RectRgn( update , where ); + HIViewSetNeedsDisplayInRegion( m_controlRef , update , true ); + DisposeRgn( update ); } else -#endif - { - Rect controlBounds; - - GetControlBounds( m_controlRef, &controlBounds ); - if ( where ) - { - Rect whereLocal = *where; - OffsetRect( &whereLocal , controlBounds.left , controlBounds.top ); - SectRect( &controlBounds , &whereLocal, &controlBounds ); - } - - InvalWindowRect( GetControlOwner( m_controlRef) , &controlBounds ); - } + HIViewSetNeedsDisplay( m_controlRef , true ); } void wxMacControl::Convert( wxPoint *pt , wxMacControl *from , wxMacControl *to ) { -#if TARGET_API_MAC_OSX - if ( from->m_peer->MacGetTopLevelWindow()->MacUsesCompositing() ) - { - HIPoint hiPoint; - - hiPoint.x = pt->x; - hiPoint.y = pt->y; - HIViewConvertPoint( &hiPoint , from->m_controlRef , to->m_controlRef ); - pt->x = (int)hiPoint.x; - pt->y = (int)hiPoint.y; - } - else -#endif - { - Rect fromRect, toRect; - - GetControlBounds( from->m_controlRef , &fromRect ); - GetControlBounds( to->m_controlRef , &toRect ); - if ( from->m_isRootControl ) - fromRect.left = fromRect.top = 0; - if ( to->m_isRootControl ) - toRect.left = toRect.top = 0; + HIPoint hiPoint; - pt->x = pt->x + fromRect.left - toRect.left; - pt->y = pt->y + fromRect.top - toRect.top; - } + hiPoint.x = pt->x; + hiPoint.y = pt->y; + HIViewConvertPoint( &hiPoint , from->m_controlRef , to->m_controlRef ); + pt->x = (int)hiPoint.x; + pt->y = (int)hiPoint.y; } void wxMacControl::SetRect( Rect *r ) { -#if TARGET_API_MAC_OSX - if ( m_isCompositing ) - { //A HIRect is actually a CGRect on OSX - which consists of two structures - //CGPoint and CGSize, which have two floats each HIRect hir = { { r->left , r->top }, { r->right - r->left , r->bottom - r->top } }; HIViewSetFrame ( m_controlRef , &hir ); // eventuall we might have to do a SetVisibility( false , true ); // before and a SetVisibility( true , true ); after - } - else -#endif - { - bool vis = IsVisible(); - if ( vis ) - { - Rect former; - GetControlBounds( m_controlRef , &former ); - InvalWindowRect( GetControlOwner( m_controlRef ) , &former ); - } - - Rect controlBounds = *r; - - // since the rect passed in is always (even in non-compositing) relative - // to the (native) parent, we have to adjust to window relative here - wxMacControl* parent = m_peer->GetParent()->GetPeer(); - if ( !parent->m_isRootControl ) - { - Rect superRect; - GetControlBounds( parent->m_controlRef , &superRect ); - OffsetRect( &controlBounds , superRect.left , superRect.top ); - } - - SetControlBounds( m_controlRef , &controlBounds ); - if ( vis ) - InvalWindowRect( GetControlOwner( m_controlRef ) , &controlBounds ); - } } void wxMacControl::GetRect( Rect *r ) { GetControlBounds( m_controlRef , r ); - if ( !m_isCompositing ) - { - // correct the case of the root control - if ( m_isRootControl ) - { - WindowRef wr = GetControlOwner( m_controlRef ); - GetWindowBounds( wr , kWindowContentRgn , r ); - r->right -= r->left; - r->bottom -= r->top; - r->left = 0; - r->top = 0; - } - else - { - wxMacControl* parent = m_peer->GetParent()->GetPeer(); - if ( !parent->m_isRootControl ) - { - Rect superRect; - GetControlBounds( parent->m_controlRef , &superRect ); - OffsetRect( r , -superRect.left , -superRect.top ); - } - } - } } void wxMacControl::GetRectInWindowCoords( Rect *r ) @@ -1328,18 +1166,6 @@ void wxMacControl::GetFeatures( UInt32 * features ) OSStatus wxMacControl::GetRegion( ControlPartCode partCode , RgnHandle region ) { OSStatus err = GetControlRegion( m_controlRef , partCode , region ); - if ( !m_isCompositing ) - { - if ( !m_isRootControl ) - { - Rect r; - - GetControlBounds(m_controlRef, &r ); - if ( !EmptyRgn( region ) ) - OffsetRgn( region , -r.left , -r.top ); - } - } - return err; } @@ -1389,28 +1215,8 @@ void wxMacControl::ScrollRect( wxRect *r , int dx , int dy ) { wxASSERT( r != NULL ); -#if TARGET_API_MAC_OSX - if ( m_isCompositing ) - { - HIRect scrollarea = CGRectMake( r->x , r->y , r->width , r->height); - HIViewScrollRect ( m_controlRef , &scrollarea , dx ,dy ); - } - else -#endif - { - Rect bounds; - - GetControlBounds( m_controlRef , &bounds ); - bounds.left += r->x; - bounds.top += r->y; - bounds.bottom = bounds.top + r->height; - bounds.right = bounds.left + r->width; - wxMacWindowClipper clip( m_peer ); - RgnHandle updateRgn = NewRgn(); - ::ScrollRect( &bounds , dx , dy , updateRgn ); - InvalWindowRgn( GetControlOwner( m_controlRef ) , updateRgn ); - DisposeRgn( updateRgn ); - } + HIRect scrollarea = CGRectMake( r->x , r->y , r->width , r->height); + HIViewScrollRect ( m_controlRef , &scrollarea , dx ,dy ); } OSType wxMacCreator = 'WXMC';