From e6c3d3e655c4637764f60eb28a3d7e7ed3d9732b Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sat, 14 Oct 2006 15:30:02 +0000 Subject: [PATCH] cleanup for 10.5 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42009 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/region.cpp | 21 ++++- src/mac/carbon/thread.cpp | 7 +- src/mac/carbon/uma.cpp | 170 ++++++++------------------------------ src/mac/carbon/utils.cpp | 88 +++++++++++++++++--- 4 files changed, 134 insertions(+), 152 deletions(-) diff --git a/src/mac/carbon/region.cpp b/src/mac/carbon/region.cpp index 08d061c295..b8147e5db8 100644 --- a/src/mac/carbon/region.cpp +++ b/src/mac/carbon/region.cpp @@ -87,6 +87,8 @@ wxRegion::wxRegion(size_t n, const wxPoint *points, int WXUNUSED(fillStyle)) { m_refData = new wxRegionRefData; +#ifndef __LP64__ + // TODO : any APIs ? // OS X somehow does not collect the region invisibly as before, so sometimes things // get drawn on screen instead of just being combined into a region, therefore we allocate a temp gworld now @@ -124,6 +126,7 @@ wxRegion::wxRegion(size_t n, const wxPoint *points, int WXUNUSED(fillStyle)) ::SetGWorld( oldWorld, oldGDHandle ); } +#endif } wxRegion::~wxRegion() @@ -406,14 +409,26 @@ void wxRegionIterator::Reset(const wxRegion& region) } else { - RegionToRectsUPP proc = NewRegionToRectsUPP( wxMacRegionToRectsCounterCallback ); + RegionToRectsUPP proc = +#ifdef __MACH__ + (RegionToRectsUPP) wxMacRegionToRectsCounterCallback; +#else + NewRegionToRectsUPP( wxMacRegionToRectsCounterCallback ); +#endif OSStatus err = noErr; err = QDRegionToRects (OTHER_M_REGION( region ) , kQDParseRegionFromTopLeft, proc, (void*)&m_numRects); if (err == noErr) { +#ifndef __MACH__ DisposeRegionToRectsUPP (proc); - proc = NewRegionToRectsUPP (wxMacRegionToRectsSetterCallback); +#endif + proc = +#ifdef __MACH__ + (RegionToRectsUPP) wxMacRegionToRectsSetterCallback; +#else + NewRegionToRectsUPP (wxMacRegionToRectsSetterCallback); +#endif m_rects = new wxRect[m_numRects]; RegionToRectsCallbackData data ; data.m_rects = m_rects ; @@ -425,7 +440,9 @@ void wxRegionIterator::Reset(const wxRegion& region) m_numRects = 0; } +#ifndef __MACH__ DisposeRegionToRectsUPP( proc ); +#endif } } diff --git a/src/mac/carbon/thread.cpp b/src/mac/carbon/thread.cpp index b8302e571f..b747d70922 100644 --- a/src/mac/carbon/thread.cpp +++ b/src/mac/carbon/thread.cpp @@ -1640,7 +1640,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) bool wxThreadModule::OnInit() { - bool hasThreadManager = MPLibraryIsLoaded(); + bool hasThreadManager = +#ifdef __LP64__ + true ; // TODO VERIFY IN NEXT BUILD +#else + MPLibraryIsLoaded(); +#endif if ( !hasThreadManager ) { diff --git a/src/mac/carbon/uma.cpp b/src/mac/carbon/uma.cpp index 7da19bddc9..161708406b 100644 --- a/src/mac/carbon/uma.cpp +++ b/src/mac/carbon/uma.cpp @@ -41,109 +41,22 @@ // windows manager, control manager, navigation services etc. are // present -static bool sUMAHasAppearance = false ; -static long sUMAAppearanceVersion = 0 ; -static long sUMASystemVersion = 0 ; -static bool sUMAHasAquaLayout = false ; +static SInt32 sUMASystemVersion = 0 ; -static bool sUMAHasInittedAppearance = false; - -bool UMAHasAppearance() { return sUMAHasAppearance ; } -long UMAGetAppearanceVersion() { return sUMAAppearanceVersion ; } long UMAGetSystemVersion() { return sUMASystemVersion ; } -static bool sUMAHasWindowManager = false ; -static long sUMAWindowManagerAttr = 0 ; - -bool UMAHasWindowManager() { return sUMAHasWindowManager ; } -long UMAGetWindowManagerAttr() { return sUMAWindowManagerAttr ; } -bool UMAHasAquaLayout() { return sUMAHasAquaLayout ; } - - void UMACleanupToolbox() { - if (sUMAHasInittedAppearance) - UnregisterAppearanceClient() ; - - if ( NavServicesAvailable() ) - NavUnload() ; - - if ( TXNTerminateTextension != (void*) kUnresolvedCFragSymbolAddress ) - TXNTerminateTextension( ) ; } void UMAInitToolbox( UInt16 inMoreMastersCalls, bool isEmbedded ) { -#if !TARGET_CARBON - ::MaxApplZone(); - for (long i = 1; i <= inMoreMastersCalls; i++) - ::MoreMasters(); - - if (!isEmbedded) - { - ::InitGraf(&qd.thePort); - ::InitFonts(); - ::InitMenus(); - ::TEInit(); - ::InitDialogs(0L); - ::FlushEvents(everyEvent, 0); - } - - long total,contig; - PurgeSpace(&total, &contig); -#endif - ::InitCursor(); if ( Gestalt(gestaltSystemVersion, &sUMASystemVersion) != noErr) sUMASystemVersion = 0x0000 ; - long theAppearance ; - if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr ) - { - // If status equals appearanceProcessRegisteredErr it means the - // appearance client already was registered (For example if we run - // embedded, the host might have registered it). In such a case - // we don't unregister it later on. - - sUMAHasAppearance = true ; - OSStatus status = RegisterAppearanceClient(); - if (status != appearanceProcessRegisteredErr) - { - // Appearance client wasn't registered yet. - sUMAHasInittedAppearance = true; - } - - if ( Gestalt( gestaltAppearanceVersion, &theAppearance ) == noErr ) - sUMAAppearanceVersion = theAppearance ; - else - sUMAAppearanceVersion = 0x0100 ; - } - - if ( Gestalt( gestaltWindowMgrAttr, &sUMAWindowManagerAttr ) == noErr ) - sUMAHasWindowManager = sUMAWindowManagerAttr & gestaltWindowMgrPresent ; - -#if TARGET_CARBON -// Call currently implicitely done : InitFloatingWindows() ; -#else - if (!isEmbedded) - { - if ( sUMAHasWindowManager ) - InitFloatingWindows() ; - else - InitWindows(); - } -#endif - - if ( NavServicesAvailable() ) - NavLoad() ; - - long menuMgrAttr ; - Gestalt( gestaltMenuMgrAttr , &menuMgrAttr ) ; - if ( menuMgrAttr & gestaltMenuMgrAquaLayoutMask ) - sUMAHasAquaLayout = true ; - - if ( TXNInitTextension != (void*) kUnresolvedCFragSymbolAddress ) +#ifndef __LP64__ { FontFamilyID fontId ; Str255 fontName ; @@ -166,19 +79,11 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls, bool isEmbedded ) TXNInitTextension( fontDescriptions, noOfFontDescriptions, options ); } +#endif UMASetSystemIsInitialized( true ); } -#if 0 -Boolean CanUseATSUI() -{ - long result; - OSErr err = Gestalt(gestaltATSUVersion, &result); - return (err == noErr); -} -#endif - // process manager long UMAGetProcessMode() { @@ -190,7 +95,9 @@ long UMAGetProcessMode() procno.lowLongOfPSN = kCurrentProcess ; processinfo.processInfoLength = sizeof(ProcessInfoRec); processinfo.processName = NULL; +#ifndef __LP64__ processinfo.processAppSpec = NULL; +#endif err = ::GetProcessInformation( &procno , &processinfo ) ; wxASSERT( err == noErr ) ; @@ -266,14 +173,17 @@ void UMAEnableMenuItem( MenuRef inMenu , MenuItemIndex inItem , bool enable) void UMAAppendSubMenuItem( MenuRef menu , const wxString& title, wxFontEncoding encoding , SInt16 id ) { - MacAppendMenu( menu, "\pA" ); + AppendMenuItemTextWithCFString( menu, + CFSTR("A"), 0, 0,NULL); UMASetMenuItemText( menu, (SInt16) ::CountMenuItems(menu), title , encoding ); SetMenuItemHierarchicalID( menu , CountMenuItems( menu ) , id ) ; } void UMAInsertSubMenuItem( MenuRef menu , const wxString& title, wxFontEncoding encoding , MenuItemIndex item , SInt16 id ) { - MacInsertMenuItem( menu, "\pA" , item ); + InsertMenuItemTextWithCFString( menu, + CFSTR("A"), item, 0, 0); + UMASetMenuItemText( menu, item+1, title , encoding ); SetMenuItemHierarchicalID( menu , item+1 , id ) ; } @@ -418,8 +328,8 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn void UMAAppendMenuItem( MenuRef menu , const wxString& title, wxFontEncoding encoding , wxAcceleratorEntry *entry ) { - MacAppendMenu(menu, "\pA"); - + AppendMenuItemTextWithCFString( menu, + CFSTR("A"), 0, 0,NULL); // don't attempt to interpret metacharacters like a '-' at the beginning (would become a separator otherwise) ChangeMenuItemAttributes( menu , ::CountMenuItems(menu), kMenuItemAttrIgnoreMeta , 0 ) ; UMASetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), title , encoding ); @@ -428,7 +338,8 @@ void UMAAppendMenuItem( MenuRef menu , const wxString& title, wxFontEncoding enc void UMAInsertMenuItem( MenuRef menu , const wxString& title, wxFontEncoding encoding , MenuItemIndex item , wxAcceleratorEntry *entry ) { - MacInsertMenuItem( menu , "\pA" , item) ; + InsertMenuItemTextWithCFString( menu, + CFSTR("A"), item, 0, 0); // don't attempt to interpret metacharacters like a '-' at the beginning (would become a separator otherwise) ChangeMenuItemAttributes( menu , item+1, kMenuItemAttrIgnoreMeta , 0 ) ; @@ -486,37 +397,12 @@ pascal QDGlobalsPtr GetQDGlobalsPtr() void UMAShowWatchCursor() { - OSErr err = noErr; - - CursHandle watchFob = GetCursor(watchCursor); - - if (watchFob == NULL) - { - err = nilHandleErr; - } - else - { -#if TARGET_CARBON -// Cursor preservedArrow; -// GetQDGlobalsArrow(&preservedArrow); -// SetQDGlobalsArrow(*watchFob); -// InitCursor(); -// SetQDGlobalsArrow(&preservedArrow); - SetCursor(*watchFob); -#else - SetCursor(*watchFob); -#endif - } + SetThemeCursor(kThemeWatchCursor); } void UMAShowArrowCursor() { -#if TARGET_CARBON - Cursor arrow; - SetCursor( GetQDGlobalsArrow(&arrow) ); -#else - SetCursor (&(qd.arrow)); -#endif + SetThemeCursor(kThemeArrowCursor); } // window manager @@ -669,16 +555,14 @@ void UMADeactivateControl( ControlRef inControl ) void UMAShowControl( ControlRef inControl ) { SetControlVisibility( inControl , true , false ) ; - Rect ctrlBounds ; - InvalWindowRect( GetControlOwner(inControl), UMAGetControlBoundsInWindowCoords(inControl, &ctrlBounds) ) ; + HIViewSetNeedsDisplay( inControl, true ); } // hides the control and adds the region to the update region void UMAHideControl( ControlRef inControl ) { SetControlVisibility( inControl , false , false ) ; - Rect ctrlBounds ; - InvalWindowRect( GetControlOwner(inControl), UMAGetControlBoundsInWindowCoords(inControl, &ctrlBounds) ) ; + HIViewSetNeedsDisplay( inControl, true ); } // keyboard focus @@ -687,13 +571,17 @@ OSErr UMASetKeyboardFocus( WindowPtr inWindow, ControlFocusPart inPart ) { OSErr err = noErr; +#ifndef __LP64__ GrafPtr port ; GetPort( &port ) ; SetPortWindowPort( inWindow ) ; +#endif err = SetKeyboardFocus( inWindow , inControl , inPart ) ; +#ifndef __LP64__ SetPort( port ) ; +#endif return err ; } @@ -722,10 +610,11 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) { // bool isHighlighted = IsWindowHighlited( inWindowRef ) ; // if ( inActivate != isHighlighted ) - +#ifndef __LP64__ GrafPtr port ; GetPort( &port ) ; SetPortWindowPort( inWindowRef ) ; +#endif HiliteWindow( inWindowRef , inActivate ) ; ControlRef control = NULL ; ::GetRootControl( inWindowRef , &control ) ; @@ -736,14 +625,19 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) else UMADeactivateControl( control ) ; } - +#ifndef __LP64__ SetPort( port ) ; +#endif } } OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState ) { +#ifndef __LP64__ return ::DrawThemePlacard( inRect , inState ) ; +#else + return noErr; +#endif } #if !TARGET_CARBON @@ -774,6 +668,8 @@ OSStatus UMAGetHelpMenu( #endif } +#ifndef __LP64__ + wxMacPortStateHelper::wxMacPortStateHelper( GrafPtr newport ) { m_clip = NULL ; @@ -828,6 +724,8 @@ wxMacPortStateHelper::~wxMacPortStateHelper() } } +#endif + OSStatus UMAPutScrap( Size size , OSType type , void *data ) { OSStatus err = noErr ; diff --git a/src/mac/carbon/utils.cpp b/src/mac/carbon/utils.cpp index 33f2e098ce..929be2b656 100644 --- a/src/mac/carbon/utils.cpp +++ b/src/mac/carbon/utils.cpp @@ -72,7 +72,7 @@ // our OS version is the same in non GUI and GUI cases wxOperatingSystemId wxGetOsVersion(int *majorVsn, int *minorVsn) { - long theSystem; + SInt32 theSystem; Gestalt(gestaltSystemVersion, &theSystem); if ( majorVsn != NULL ) @@ -360,7 +360,9 @@ void wxFlushEvents() // Emit a beeeeeep void wxBell() { +#ifndef __LP64__ SysBeep(30); +#endif } @@ -529,9 +531,12 @@ bool wxCheckForInterrupt(wxWindow *wnd) void wxGetMousePosition( int* x, int* y ) { Point pt; - +#if wxMAC_USE_CORE_GRAPHICS + GetGlobalMouse(&pt); +#else GetMouse( &pt ); LocalToGlobal( &pt ); +#endif *x = pt.h; *y = pt.v; }; @@ -545,21 +550,33 @@ bool wxColourDisplay() // Returns depth of screen int wxDisplayDepth() { + int theDepth = 8; +#if wxMAC_USE_CORE_GRAPHICS + theDepth = (int) CGDisplayBitsPerPixel(CGMainDisplayID()); +#else Rect globRect; SetRect(&globRect, -32760, -32760, 32760, 32760); GDHandle theMaxDevice; - int theDepth = 8; theMaxDevice = GetMaxDevice(&globRect); if (theMaxDevice != NULL) theDepth = (**(**theMaxDevice).gdPMap).pixelSize; - +#endif return theDepth; } // Get size of display void wxDisplaySize(int *width, int *height) { +#if wxMAC_USE_CORE_GRAPHICS + CGRect bounds ; + // TODO adapt for multi-displays + bounds = CGDisplayBounds(CGMainDisplayID()); + if ( width ) + *width = bounds.size.width ; + if ( height ) + *height = bounds.size.height; +#else BitMap screenBits; GetQDGlobalsScreenBits( &screenBits ); @@ -568,6 +585,7 @@ void wxDisplaySize(int *width, int *height) if (height != NULL) *height = screenBits.bounds.bottom - screenBits.bounds.top; +#endif } void wxDisplaySizeMM(int *width, int *height) @@ -585,8 +603,20 @@ void wxDisplaySizeMM(int *width, int *height) void wxClientDisplayRect(int *x, int *y, int *width, int *height) { +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 + HIRect bounds ; + HIWindowGetAvailablePositioningBounds(kCGNullDirectDisplay,kHICoordSpace72DPIGlobal, + &bounds); + if ( x ) + *x = bounds.origin.x; + if ( y ) + *y = bounds.origin.y; + if ( width ) + *width = bounds.size.width; + if ( height ) + *height = bounds.size.height; +#else Rect r; - GetAvailableWindowPositioningBounds( GetMainDevice() , &r ); if ( x ) *x = r.left; @@ -596,6 +626,7 @@ void wxClientDisplayRect(int *x, int *y, int *width, int *height) *width = r.right - r.left; if ( height ) *height = r.bottom - r.top; +#endif } wxWindow* wxFindWindowAtPoint(const wxPoint& pt) @@ -835,7 +866,7 @@ void wxMacControl::Dispose() m_controlRef = NULL; } -void wxMacControl::SetReference( SInt32 data ) +void wxMacControl::SetReference( URefCon data ) { SetControlReference( m_controlRef , data ); } @@ -1029,7 +1060,11 @@ void wxMacControl::SetRange( SInt32 minimum , SInt32 maximum ) short wxMacControl::HandleKey( SInt16 keyCode, SInt16 charCode, EventModifiers modifiers ) { +#ifndef __LP64__ return HandleControlKey( m_controlRef , keyCode , charCode , modifiers ); +#else + return 0; +#endif } void wxMacControl::SetActionProc( ControlActionUPP actionProc ) @@ -1237,7 +1272,7 @@ void wxMacControl::SetReferenceInNativeControl() wxMacControl* wxMacControl::GetReferenceFromNativeControl(ControlRef control) { wxMacControl* ctl = NULL; - UInt32 actualSize; + ByteCount actualSize; if ( GetControlProperty( control ,wxMacCreator,wxMacControlProperty, sizeof(ctl) , &actualSize , &ctl ) == noErr ) { @@ -1335,7 +1370,7 @@ wxMacDataBrowserControl::wxMacDataBrowserControl( wxWindow* peer, const wxPoint& OSStatus wxMacDataBrowserControl::GetItemCount( DataBrowserItemID container, Boolean recurse, DataBrowserItemState state, - UInt32 *numItems) const + ItemCount *numItems) const { return GetDataBrowserItemCount( m_controlRef, container, recurse, state, numItems ); } @@ -1510,12 +1545,12 @@ OSStatus wxMacDataBrowserControl::GetColumnCount(UInt32* numColumns) const } OSStatus wxMacDataBrowserControl::GetColumnPosition( DataBrowserPropertyID column, - UInt32 *position) const + DataBrowserTableViewColumnIndex *position) const { return GetDataBrowserTableViewColumnPosition( m_controlRef , column , position); } -OSStatus wxMacDataBrowserControl::SetColumnPosition( DataBrowserPropertyID column, UInt32 position) +OSStatus wxMacDataBrowserControl::SetColumnPosition( DataBrowserPropertyID column, DataBrowserTableViewColumnIndex position) { return SetDataBrowserTableViewColumnPosition( m_controlRef , column , position); } @@ -1802,7 +1837,7 @@ void wxMacDataItemBrowserControl::ItemNotification( unsigned int wxMacDataItemBrowserControl::GetItemCount(const wxMacDataItem* container, bool recurse , DataBrowserItemState state) const { - UInt32 numItems = 0; + ItemCount numItems = 0; verify_noerr( wxMacDataBrowserControl::GetItemCount( (DataBrowserItemID)container, recurse, state, &numItems ) ); return numItems; @@ -1950,7 +1985,7 @@ void wxMacDataItemBrowserControl::AddItems(wxMacDataItem *container, wxArrayMacD void wxMacDataItemBrowserControl::RemoveItem(wxMacDataItem *container, wxMacDataItem* item) { OSStatus err = wxMacDataBrowserControl::RemoveItems( (DataBrowserItemID)container, 1, - (UInt32*) &item, kDataBrowserItemNoProperty ); + (DataBrowserItemID*) &item, kDataBrowserItemNoProperty ); verify_noerr( err ); } @@ -1962,7 +1997,7 @@ void wxMacDataItemBrowserControl::RemoveItems(wxMacDataItem *container, wxArrayM items[i] = (DataBrowserItemID) itemArray[i]; OSStatus err = wxMacDataBrowserControl::RemoveItems( (DataBrowserItemID)container, noItems, - (UInt32*) items, kDataBrowserItemNoProperty ); + (DataBrowserItemID*) items, kDataBrowserItemNoProperty ); verify_noerr( err ); delete [] items; } @@ -2303,6 +2338,8 @@ CGColorSpaceRef wxMacGetGenericRGBColorSpace() } #endif +#ifndef __LP64__ + wxMacPortSaver::wxMacPortSaver( GrafPtr port ) { ::GetPort( &m_port ); @@ -2313,5 +2350,30 @@ wxMacPortSaver::~wxMacPortSaver() { ::SetPort( m_port ); } +#endif + +void wxMacGlobalToLocal( WindowRef window , Point*pt ) +{ +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4 + HIPoint p = CGPointMake( pt->h, pt->v ); + HIPointConvert( &p, kHICoordSpace72DPIGlobal, NULL, kHICoordSpaceWindow, window ); + pt->h = p.x; + pt->v = p.y; +#else + QDGlobalToLocalPoint( GetWindowPort(window), pt ) ; +#endif +} + +void wxMacLocalToGlobal( WindowRef window , Point*pt ) +{ +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4 + HIPoint p = CGPointMake( pt->h, pt->v ); + HIPointConvert( &p, kHICoordSpaceWindow, window, kHICoordSpace72DPIGlobal, NULL ); + pt->h = p.x; + pt->v = p.y; +#else + QDLocalToGlobalPoint( GetWindowPort(window), pt ) ; +#endif +} #endif // wxUSE_GUI -- 2.45.2