// Licence: The wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#include "wx/defs.h"
+#include "wx/wxprec.h"
#if wxUSE_GUI
#include "wx/dc.h"
-#include <MacTextEditor.h>
#ifndef __DARWIN__
+# include <MacTextEditor.h>
# include <Navigation.h>
# if defined(TARGET_CARBON)
# if PM_USE_SESSION_APIS
#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
-// the application so all wxWindows code can safely assume that appearance 1.1
+// the application so all wxWidgets code can safely assume that appearance 1.1
// windows manager, control manager, navigation services etc. are
// present
ProcessInfoRec processinfo;
ProcessSerialNumber procno ;
- procno.highLongOfPSN = NULL ;
+ procno.highLongOfPSN = 0 ;
procno.lowLongOfPSN = kCurrentProcess ;
processinfo.processInfoLength = sizeof(ProcessInfoRec);
processinfo.processName = NULL;
void UMAInsertSubMenuItem( MenuRef menu , const wxString& title, wxFontEncoding encoding , MenuItemIndex item , SInt16 id )
{
MacInsertMenuItem(menu, "\pA" , item);
- UMASetMenuItemText(menu, item , title , encoding);
- SetMenuItemHierarchicalID( menu , item , id ) ;
+ UMASetMenuItemText(menu, item+1, title , encoding);
+ SetMenuItemHierarchicalID( menu , item+1 , id ) ;
}
void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEntry *entry )
glyph += 13 ;
if ( !explicitCommandKey )
modifiers |= kMenuNoCommandModifier ;
- }
+ }
else
{
switch( key )
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 ;
}
- SetItemCmd( menu, item , macKey );
+ // 1d and 1e have special meaning to SetItemCmd, so
+ // do not use for these character codes.
+ if (key != WXK_UP && key != WXK_RIGHT)
+ SetItemCmd( menu, item , macKey );
+
SetMenuItemModifiers(menu, item , modifiers ) ;
if ( glyph )
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 ) ;
}
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 ) ;
}
#endif
}
-void UMADrawControl( ControlRef inControl )
-{
-#if TARGET_API_MAC_CARBON
- ::Draw1Control( inControl );
-#else
- WindowRef theWindow = GetControlOwner(inControl) ;
- wxMacPortStateHelper help( (GrafPtr) GetWindowPort(theWindow) ) ;
- RgnHandle updateRgn = NewRgn() ;
- GetWindowUpdateRgn( theWindow , updateRgn ) ;
- Point zero = { 0 , 0 } ;
- LocalToGlobal( &zero ) ;
- OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
- ::DrawControlInCurrentPort( inControl ) ;
- InvalWindowRgn( theWindow, updateRgn) ;
- DisposeRgn( updateRgn ) ;
-#endif
-}
-
void UMAMoveControl( ControlRef inControl , short x , short y )
{
#if !TARGET_API_MAC_OSX
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 ;
if ( inWindowRef )
{
// bool isHighlighted = IsWindowHighlited( inWindowRef ) ;
-// if ( inActivate != isHightlited )
+// if ( inActivate != isHighlighted )
GrafPtr port ;
GetPort( &port ) ;
SetPortWindowPort( inWindowRef ) ;
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 ;