X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..1b5bee64fda0bbabe4234aa7143c3d6de4496149:/src/mac/carbon/uma.cpp diff --git a/src/mac/carbon/uma.cpp b/src/mac/carbon/uma.cpp index 26a50b4769..bf940a280d 100644 --- a/src/mac/carbon/uma.cpp +++ b/src/mac/carbon/uma.cpp @@ -6,10 +6,10 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Stefan Csomor -// Licence: The wxWidgets licence +// Licence: The wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#include "wx/defs.h" +#include "wx/wxprec.h" #if wxUSE_GUI @@ -194,7 +194,7 @@ long UMAGetProcessMode() ProcessInfoRec processinfo; ProcessSerialNumber procno ; - procno.highLongOfPSN = NULL ; + procno.highLongOfPSN = 0 ; procno.lowLongOfPSN = kCurrentProcess ; processinfo.processInfoLength = sizeof(ProcessInfoRec); processinfo.processName = NULL; @@ -318,7 +318,7 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn glyph += 13 ; if ( !explicitCommandKey ) modifiers |= kMenuNoCommandModifier ; - } + } else { switch( key ) @@ -379,7 +379,14 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn macKey = kDownArrowCharCode ; glyph = kMenuDownArrowGlyph ; break ; + default : + macKey = toupper( key ) ; + break ; } + // we now allow non command key shortcuts + // remove in case this gives problems + if ( !explicitCommandKey ) + modifiers |= kMenuNoCommandModifier ; } // 1d and 1e have special meaning to SetItemCmd, so @@ -397,6 +404,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 ) ; } @@ -404,6 +413,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 ) ; } @@ -636,22 +647,6 @@ OSErr UMASetKeyboardFocus (WindowPtr inWindow, return err ; } -// events -void UMAUpdateControls( WindowPtr inWindow , RgnHandle inRgn ) -{ - wxMacPortStateHelper help( (GrafPtr) GetWindowPort( (WindowRef) inWindow) ) ; - RgnHandle updateRgn = NewRgn() ; - GetWindowUpdateRgn( inWindow , updateRgn ) ; - - Point zero = { 0 , 0 } ; - LocalToGlobal( &zero ) ; - OffsetRgn( updateRgn , -zero.h , -zero.v ) ; - - UpdateControls( inWindow , inRgn ) ; - InvalWindowRgn( inWindow, updateRgn) ; - DisposeRgn( updateRgn ) ; -} - bool UMAIsWindowFloating( WindowRef inWindow ) { WindowClass cl ; @@ -795,22 +790,18 @@ OSStatus UMAPutScrap( Size size , OSType type , void *data ) Rect* UMAGetControlBoundsInWindowCoords(ControlRef theControl, Rect *bounds) { - wxWindow* win = wxFindControlFromMacControl( theControl ) ; +// wxWindow* win = wxFindControlFromMacControl( theControl ) ; GetControlBounds( theControl , bounds ) ; #if TARGET_API_MAC_OSX - if ( win != NULL && win->MacGetTopLevelWindow() != NULL ) - { - int x , y ; - x = 0 ; - y = 0 ; - - win->GetParent()->MacWindowToRootWindow( &x , & y ) ; - bounds->left += x ; - bounds->right += x ; - bounds->top += y ; - bounds->bottom += y ; - } + WindowRef tlwref = GetControlOwner( theControl ) ; + wxWindow* tlwwx = (wxWindow*) wxFindWinFromMacWindow( tlwref ) ; + 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 ; }