X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1bec2ee494cff7088b1b131d8dc1c6a4ebebd217..de1b0aeb6ca71f915479d07e040b1d65e5096951:/src/mac/carbon/uma.cpp diff --git a/src/mac/carbon/uma.cpp b/src/mac/carbon/uma.cpp index 06922510a1..8588e85260 100644 --- a/src/mac/carbon/uma.cpp +++ b/src/mac/carbon/uma.cpp @@ -9,14 +9,14 @@ // Licence: The wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#include "wx/defs.h" +#include "wx/wxprec.h" #if wxUSE_GUI #include "wx/dc.h" -#include #ifndef __DARWIN__ +# include # include # if defined(TARGET_CARBON) # if PM_USE_SESSION_APIS @@ -33,6 +33,9 @@ #endif #include "wx/mac/uma.h" +#if TARGET_API_MAC_OSX +#include "wx/toplevel.h" +#endif // since we have decided that we only support 8.6 upwards we are // checking for these minimum requirements in the startup code of @@ -194,7 +197,7 @@ long UMAGetProcessMode() ProcessInfoRec processinfo; ProcessSerialNumber procno ; - procno.highLongOfPSN = NULL ; + procno.highLongOfPSN = 0 ; procno.lowLongOfPSN = kCurrentProcess ; processinfo.processInfoLength = sizeof(ProcessInfoRec); processinfo.processName = NULL; @@ -404,6 +407,8 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn void UMAAppendMenuItem( MenuRef menu , const wxString& title, wxFontEncoding encoding , wxAcceleratorEntry *entry ) { MacAppendMenu(menu, "\pA"); + // 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 ); UMASetMenuItemShortcut( menu , (SInt16) ::CountMenuItems(menu), entry ) ; } @@ -411,6 +416,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) ; + // don't attempt to interpret metacharacters like a '-' at the beginning (would become a separator otherwise) + ChangeMenuItemAttributes( menu , item+1, kMenuItemAttrIgnoreMeta , 0 ) ; UMASetMenuItemText(menu, item+1 , title , encoding ); UMASetMenuItemShortcut( menu , item+1 , entry ) ; } @@ -666,7 +673,7 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) if ( inWindowRef ) { // bool isHighlighted = IsWindowHighlited( inWindowRef ) ; -// if ( inActivate != isHightlited ) +// if ( inActivate != isHighlighted ) GrafPtr port ; GetPort( &port ) ; SetPortWindowPort( inWindowRef ) ; @@ -786,21 +793,17 @@ OSStatus UMAPutScrap( Size size , OSType type , void *data ) Rect* UMAGetControlBoundsInWindowCoords(ControlRef theControl, Rect *bounds) { - wxWindow* win = wxFindControlFromMacControl( theControl ) ; - GetControlBounds( theControl , bounds ) ; #if TARGET_API_MAC_OSX - if ( win != NULL && win->MacGetTopLevelWindow() != NULL ) + WindowRef tlwref = GetControlOwner( theControl ) ; + + wxTopLevelWindowMac* tlwwx = wxFindWinFromMacWindow( tlwref ) ; + if ( tlwwx != NULL && tlwwx->MacUsesCompositing() ) { - int x , y ; - x = 0 ; - y = 0 ; - - win->GetParent()->MacWindowToRootWindow( &x , & y ) ; - bounds->left += x ; - bounds->right += x ; - bounds->top += y ; - bounds->bottom += y ; + ControlRef rootControl = tlwwx->GetPeer()->GetControlRef() ; + HIPoint hiPoint = CGPointMake( 0 , 0 ) ; + HIViewConvertPoint( &hiPoint , HIViewGetSuperview(theControl) , rootControl ) ; + OffsetRect( bounds , (short) hiPoint.x , (short) hiPoint.y ) ; } #endif return bounds ;