fix so wxMenu::InsertItem actually inserts rather than overwrites

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20974 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2003-06-06 23:46:36 +00:00
parent c69279ef70
commit 58751a8685
4 changed files with 178 additions and 178 deletions

View File

@ -69,7 +69,7 @@ void wxMenu::Init()
m_startRadioGroup = -1; m_startRadioGroup = -1;
// create the menu // create the menu
m_macMenuId = s_macNextMenuId++; m_macMenuId = s_macNextMenuId++;
m_hMenu = UMANewMenu(m_macMenuId, m_title); m_hMenu = UMANewMenu(m_macMenuId, m_title);
if ( !m_hMenu ) if ( !m_hMenu )
@ -116,19 +116,19 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
else else
MacInsertMenuItem(MAC_WXHMENU(m_hMenu), "\p-" , pos); MacInsertMenuItem(MAC_WXHMENU(m_hMenu), "\p-" , pos);
} }
else else
{ {
wxMenu *pSubMenu = pItem->GetSubMenu() ; wxMenu *pSubMenu = pItem->GetSubMenu() ;
if ( pSubMenu != NULL ) if ( pSubMenu != NULL )
{ {
wxASSERT_MSG( pSubMenu->m_hMenu != NULL , wxT("invalid submenu added")); wxASSERT_MSG( pSubMenu->m_hMenu != NULL , wxT("invalid submenu added"));
pSubMenu->m_menuParent = this ; pSubMenu->m_menuParent = this ;
if (wxMenuBar::MacGetInstalledMenuBar() == m_menuBar) if (wxMenuBar::MacGetInstalledMenuBar() == m_menuBar)
{ {
pSubMenu->MacBeforeDisplay( true ) ; pSubMenu->MacBeforeDisplay( true ) ;
} }
if ( pos == (size_t)-1 ) if ( pos == (size_t)-1 )
UMAAppendSubMenuItem(MAC_WXHMENU(m_hMenu), pItem->GetText(), pSubMenu->m_macMenuId); UMAAppendSubMenuItem(MAC_WXHMENU(m_hMenu), pItem->GetText(), pSubMenu->m_macMenuId);
else else
@ -148,12 +148,12 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
UMAInsertMenuItem(MAC_WXHMENU(m_hMenu), wxT("a") , pos); UMAInsertMenuItem(MAC_WXHMENU(m_hMenu), wxT("a") , pos);
} }
SetMenuItemCommandID( MAC_WXHMENU(m_hMenu) , pos , pItem->GetId() ) ; SetMenuItemCommandID( MAC_WXHMENU(m_hMenu) , pos+1 , pItem->GetId() ) ;
pItem->UpdateItemText() ; pItem->UpdateItemText() ;
pItem->UpdateItemBitmap() ; pItem->UpdateItemBitmap() ;
pItem->UpdateItemStatus() ; pItem->UpdateItemStatus() ;
if ( pItem->GetId() == idMenuTitle ) if ( pItem->GetId() == idMenuTitle )
{ {
UMAEnableMenuItem(MAC_WXHMENU(m_hMenu) , pos , false ) ; UMAEnableMenuItem(MAC_WXHMENU(m_hMenu) , pos , false ) ;
} }
@ -311,10 +311,10 @@ wxWindow *wxMenu::GetWindow() const
return NULL; return NULL;
} }
// helper functions returning the mac menu position for a certain item, note that this is // helper functions returning the mac menu position for a certain item, note that this is
// mac-wise 1 - based, i.e. the first item has index 1 whereas on MSWin it has pos 0 // mac-wise 1 - based, i.e. the first item has index 1 whereas on MSWin it has pos 0
int wxMenu::MacGetIndexFromId( int id ) int wxMenu::MacGetIndexFromId( int id )
{ {
size_t pos; size_t pos;
wxMenuItemList::Node *node = GetMenuItems().GetFirst(); wxMenuItemList::Node *node = GetMenuItems().GetFirst();
@ -325,14 +325,14 @@ int wxMenu::MacGetIndexFromId( int id )
node = node->GetNext(); node = node->GetNext();
} }
if (!node) if (!node)
return 0; return 0;
return pos + 1 ; return pos + 1 ;
} }
int wxMenu::MacGetIndexFromItem( wxMenuItem *pItem ) int wxMenu::MacGetIndexFromItem( wxMenuItem *pItem )
{ {
size_t pos; size_t pos;
wxMenuItemList::Node *node = GetMenuItems().GetFirst(); wxMenuItemList::Node *node = GetMenuItems().GetFirst();
@ -346,31 +346,31 @@ int wxMenu::MacGetIndexFromItem( wxMenuItem *pItem )
if (!node) if (!node)
return 0; return 0;
return pos + 1 ; return pos + 1 ;
} }
void wxMenu::MacEnableMenu( bool bDoEnable ) void wxMenu::MacEnableMenu( bool bDoEnable )
{ {
UMAEnableMenuItem(MAC_WXHMENU(m_hMenu) , 0 , bDoEnable ) ; UMAEnableMenuItem(MAC_WXHMENU(m_hMenu) , 0 , bDoEnable ) ;
::DrawMenuBar() ; ::DrawMenuBar() ;
} }
// MacOS needs to know about submenus somewhere within this menu // MacOS needs to know about submenus somewhere within this menu
// before it can be displayed , also hide special menu items like preferences // before it can be displayed , also hide special menu items like preferences
// that are handled by the OS // that are handled by the OS
void wxMenu::MacBeforeDisplay( bool isSubMenu ) void wxMenu::MacBeforeDisplay( bool isSubMenu )
{ {
wxMenuItem* previousItem = NULL ; wxMenuItem* previousItem = NULL ;
size_t pos ; size_t pos ;
wxMenuItemList::Node *node; wxMenuItemList::Node *node;
wxMenuItem *item; wxMenuItem *item;
for (pos = 0, node = GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++) for (pos = 0, node = GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++)
{ {
item = (wxMenuItem *)node->GetData(); item = (wxMenuItem *)node->GetData();
wxMenu* subMenu = item->GetSubMenu() ; wxMenu* subMenu = item->GetSubMenu() ;
if (subMenu) if (subMenu)
{ {
subMenu->MacBeforeDisplay( true ) ; subMenu->MacBeforeDisplay( true ) ;
} }
@ -390,7 +390,7 @@ void wxMenu::MacBeforeDisplay( bool isSubMenu )
} }
} }
} }
#endif #endif
} }
previousItem = item ; previousItem = item ;
} }
@ -400,7 +400,7 @@ void wxMenu::MacBeforeDisplay( bool isSubMenu )
} }
// undo all changes from the MacBeforeDisplay call // undo all changes from the MacBeforeDisplay call
void wxMenu::MacAfterDisplay( bool isSubMenu ) void wxMenu::MacAfterDisplay( bool isSubMenu )
{ {
if ( isSubMenu ) if ( isSubMenu )
::DeleteMenu(MacGetMenuId()); ::DeleteMenu(MacGetMenuId());
@ -409,11 +409,11 @@ void wxMenu::MacAfterDisplay( bool isSubMenu )
int pos ; int pos ;
wxMenuItemList::Node *node; wxMenuItemList::Node *node;
wxMenuItem *item; wxMenuItem *item;
for (pos = 0, node = GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++) for (pos = 0, node = GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++)
{ {
item = (wxMenuItem *)node->GetData(); item = (wxMenuItem *)node->GetData();
wxMenu* subMenu = item->GetSubMenu() ; wxMenu* subMenu = item->GetSubMenu() ;
if (subMenu) if (subMenu)
{ {
subMenu->MacAfterDisplay( true ) ; subMenu->MacAfterDisplay( true ) ;
} }
@ -427,7 +427,7 @@ void wxMenu::MacAfterDisplay( bool isSubMenu )
// Menu Bar // Menu Bar
/* /*
Mac Implementation note : Mac Implementation note :
@ -435,11 +435,11 @@ The Mac has only one global menubar, so we attempt to install the currently
active menubar from a frame, we currently don't take into account mdi-frames active menubar from a frame, we currently don't take into account mdi-frames
which would ask for menu-merging which would ask for menu-merging
Secondly there is no mac api for changing a menubar that is not the current Secondly there is no mac api for changing a menubar that is not the current
menubar, so we have to wait for preparing the actual menubar until the menubar, so we have to wait for preparing the actual menubar until the
wxMenubar is to be used wxMenubar is to be used
We can in subsequent versions use MacInstallMenuBar to provide some sort of We can in subsequent versions use MacInstallMenuBar to provide some sort of
auto-merge for MDI in case this will be necessary auto-merge for MDI in case this will be necessary
*/ */
@ -496,13 +496,13 @@ void wxMenuBar::Refresh(bool WXUNUSED(eraseBackground), const wxRect *WXUNUSED(r
DrawMenuBar(); DrawMenuBar();
} }
void wxMenuBar::MacInstallMenuBar() void wxMenuBar::MacInstallMenuBar()
{ {
if ( s_macInstalledMenuBar == this ) if ( s_macInstalledMenuBar == this )
return ; return ;
wxStAppResource resload ; wxStAppResource resload ;
Handle menubar = ::GetNewMBar( kwxMacMenuBarResource ) ; Handle menubar = ::GetNewMBar( kwxMacMenuBarResource ) ;
wxString message ; wxString message ;
wxCHECK_RET( menubar != NULL, wxT("can't read MBAR resource") ); wxCHECK_RET( menubar != NULL, wxT("can't read MBAR resource") );
@ -520,7 +520,7 @@ void wxMenuBar::MacInstallMenuBar()
::AppendResMenu(menu, 'DRVR'); ::AppendResMenu(menu, 'DRVR');
} }
#endif #endif
// clean-up the help menu before adding new items // clean-up the help menu before adding new items
MenuHandle mh = NULL ; MenuHandle mh = NULL ;
if ( UMAGetHelpMenu( &mh , &firstUserHelpMenuItem) == noErr ) if ( UMAGetHelpMenu( &mh , &firstUserHelpMenuItem) == noErr )
@ -557,16 +557,16 @@ void wxMenuBar::MacInstallMenuBar()
{ {
continue ; continue ;
} }
for (pos = 0 , node = menu->GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++) for (pos = 0 , node = menu->GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++)
{ {
item = (wxMenuItem *)node->GetData(); item = (wxMenuItem *)node->GetData();
subMenu = item->GetSubMenu() ; subMenu = item->GetSubMenu() ;
if (subMenu) if (subMenu)
{ {
// we don't support hierarchical menus in the help menu yet // we don't support hierarchical menus in the help menu yet
} }
else else
{ {
if ( item->IsSeparator() ) if ( item->IsSeparator() )
{ {
@ -578,7 +578,7 @@ void wxMenuBar::MacInstallMenuBar()
wxAcceleratorEntry* entry = wxGetAccelFromString( item->GetText() ) ; wxAcceleratorEntry* entry = wxGetAccelFromString( item->GetText() ) ;
if ( item->GetId() == wxApp::s_macAboutMenuItemId ) if ( item->GetId() == wxApp::s_macAboutMenuItemId )
{ {
UMASetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , item->GetText() ); UMASetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , item->GetText() );
UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 , true ); UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 , true );
SetMenuItemCommandID( GetMenuHandle( kwxMacAppleMenuId ) , 1 , item->GetId() ) ; SetMenuItemCommandID( GetMenuHandle( kwxMacAppleMenuId ) , 1 , item->GetId() ) ;
@ -592,7 +592,7 @@ void wxMenuBar::MacInstallMenuBar()
SetMenuItemCommandID( mh , CountMenuItems(mh) , item->GetId() ) ; SetMenuItemCommandID( mh , CountMenuItems(mh) , item->GetId() ) ;
} }
} }
delete entry ; delete entry ;
} }
} }
@ -652,7 +652,7 @@ int wxMenuBar::FindMenu(const wxString& title)
{ {
wxString title = wxStripMenuCodes(m_titles[i]); wxString title = wxStripMenuCodes(m_titles[i]);
if ( menuTitle == title ) if ( menuTitle == title )
return i; return i;
} }
return wxNOT_FOUND; return wxNOT_FOUND;
@ -762,7 +762,7 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title)
return FALSE; return FALSE;
m_titles.Add(title); m_titles.Add(title);
UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , title ) ; UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , title ) ;
if ( IsAttached() ) if ( IsAttached() )

View File

@ -33,7 +33,7 @@
// since we have decided that we only support 8.6 upwards we are // since we have decided that we only support 8.6 upwards we are
// checking for these minimum requirements in the startup code of // 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 wxWindows code can safely assume that appearance 1.1
// windows manager, control manager, navigation services etc. are // windows manager, control manager, navigation services etc. are
// present // present
static bool sUMAHasAppearance = false ; static bool sUMAHasAppearance = false ;
@ -90,7 +90,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
if ( Gestalt(gestaltSystemVersion, &sUMASystemVersion) != noErr) if ( Gestalt(gestaltSystemVersion, &sUMASystemVersion) != noErr)
sUMASystemVersion = 0x0000 ; sUMASystemVersion = 0x0000 ;
long theAppearance ; long theAppearance ;
if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr ) if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr )
{ {
@ -109,7 +109,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
{ {
sUMAHasWindowManager = sUMAWindowManagerAttr & gestaltWindowMgrPresent ; sUMAHasWindowManager = sUMAWindowManagerAttr & gestaltWindowMgrPresent ;
} }
#if TARGET_CARBON #if TARGET_CARBON
// Call currently implicitely done : InitFloatingWindows() ; // Call currently implicitely done : InitFloatingWindows() ;
#else #else
@ -130,7 +130,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
sUMAHasAquaLayout = true ; sUMAHasAquaLayout = true ;
if ( TXNInitTextension != (void*) kUnresolvedCFragSymbolAddress ) if ( TXNInitTextension != (void*) kUnresolvedCFragSymbolAddress )
{ {
FontFamilyID fontId ; FontFamilyID fontId ;
Str255 fontName ; Str255 fontName ;
SInt16 fontSize ; SInt16 fontSize ;
@ -143,7 +143,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
{ fontId , (fontSize << 16) ,kTXNDefaultFontStyle, kTXNSystemDefaultEncoding } , { fontId , (fontSize << 16) ,kTXNDefaultFontStyle, kTXNSystemDefaultEncoding } ,
} ; } ;
int noOfFontDescriptions = sizeof( fontDescriptions ) / sizeof(TXNMacOSPreferredFontDescription) ; int noOfFontDescriptions = sizeof( fontDescriptions ) / sizeof(TXNMacOSPreferredFontDescription) ;
#if 0 // TARGET_CARBON #if 0 // TARGET_CARBON
--noOfFontDescriptions ; --noOfFontDescriptions ;
#endif #endif
// kTXNAlwaysUseQuickDrawTextMask might be desirable because of speed increases but it crashes the app under OS X upon key stroke // kTXNAlwaysUseQuickDrawTextMask might be desirable because of speed increases but it crashes the app under OS X upon key stroke
@ -171,12 +171,12 @@ Boolean CanUseATSUI()
} }
*/ */
// process manager // process manager
long UMAGetProcessMode() long UMAGetProcessMode()
{ {
OSErr err ; OSErr err ;
ProcessInfoRec processinfo; ProcessInfoRec processinfo;
ProcessSerialNumber procno ; ProcessSerialNumber procno ;
procno.highLongOfPSN = NULL ; procno.highLongOfPSN = NULL ;
procno.lowLongOfPSN = kCurrentProcess ; procno.lowLongOfPSN = kCurrentProcess ;
processinfo.processInfoLength = sizeof(ProcessInfoRec); processinfo.processInfoLength = sizeof(ProcessInfoRec);
@ -188,7 +188,7 @@ long UMAGetProcessMode()
return processinfo.processMode ; return processinfo.processMode ;
} }
bool UMAGetProcessModeDoesActivateOnFGSwitch() bool UMAGetProcessModeDoesActivateOnFGSwitch()
{ {
return UMAGetProcessMode() & modeDoesActivateOnFGSwitch ; return UMAGetProcessMode() & modeDoesActivateOnFGSwitch ;
} }
@ -222,7 +222,7 @@ void UMASetMenuTitle( MenuRef menu , const wxString& title )
#endif #endif
} }
void UMASetMenuItemText( MenuRef menu, MenuItemIndex item, const wxString& title ) void UMASetMenuItemText( MenuRef menu, MenuItemIndex item, const wxString& title )
{ {
wxString str = wxStripMenuCodes( title ) ; wxString str = wxStripMenuCodes( title ) ;
#if TARGET_CARBON #if TARGET_CARBON
@ -240,7 +240,7 @@ UInt32 UMAMenuEvent( EventRecord *inEvent )
return MenuEvent( inEvent ) ; return MenuEvent( inEvent ) ;
} }
void UMAEnableMenuItem( MenuRef inMenu , MenuItemIndex inItem , bool enable) void UMAEnableMenuItem( MenuRef inMenu , MenuItemIndex inItem , bool enable)
{ {
if ( enable ) if ( enable )
EnableMenuItem( inMenu , inItem ) ; EnableMenuItem( inMenu , inItem ) ;
@ -248,14 +248,14 @@ void UMAEnableMenuItem( MenuRef inMenu , MenuItemIndex inItem , bool enable)
DisableMenuItem( inMenu , inItem ) ; DisableMenuItem( inMenu , inItem ) ;
} }
void UMAAppendSubMenuItem( MenuRef menu , const wxString& title , SInt16 id ) void UMAAppendSubMenuItem( MenuRef menu , const wxString& title , SInt16 id )
{ {
MacAppendMenu(menu, "\pA"); MacAppendMenu(menu, "\pA");
UMASetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), title ); UMASetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), title );
SetMenuItemHierarchicalID( menu , CountMenuItems( menu ) , id ) ; SetMenuItemHierarchicalID( menu , CountMenuItems( menu ) , id ) ;
} }
void UMAInsertSubMenuItem( MenuRef menu , const wxString& title , MenuItemIndex item , SInt16 id ) void UMAInsertSubMenuItem( MenuRef menu , const wxString& title , MenuItemIndex item , SInt16 id )
{ {
MacInsertMenuItem(menu, "\pA" , item); MacInsertMenuItem(menu, "\pA" , item);
UMASetMenuItemText(menu, item , title ); UMASetMenuItemText(menu, item , title );
@ -266,24 +266,24 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn
{ {
if ( !entry ) if ( !entry )
return ; return ;
UInt8 modifiers = 0 ; UInt8 modifiers = 0 ;
SInt16 key = entry->GetKeyCode() ; SInt16 key = entry->GetKeyCode() ;
if ( key ) if ( key )
{ {
bool explicitCommandKey = false ; bool explicitCommandKey = false ;
if ( entry->GetFlags() & wxACCEL_CTRL ) if ( entry->GetFlags() & wxACCEL_CTRL )
{ {
explicitCommandKey = true ; explicitCommandKey = true ;
} }
if (entry->GetFlags() & wxACCEL_ALT ) if (entry->GetFlags() & wxACCEL_ALT )
{ {
modifiers |= kMenuOptionModifier ; modifiers |= kMenuOptionModifier ;
} }
if (entry->GetFlags() & wxACCEL_SHIFT) if (entry->GetFlags() & wxACCEL_SHIFT)
{ {
modifiers |= kMenuShiftModifier ; modifiers |= kMenuShiftModifier ;
} }
@ -298,7 +298,7 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn
glyph += 13 ; glyph += 13 ;
if ( !explicitCommandKey ) if ( !explicitCommandKey )
modifiers |= kMenuNoCommandModifier ; modifiers |= kMenuNoCommandModifier ;
switch( key ) switch( key )
{ {
case WXK_F1 : case WXK_F1 :
@ -426,18 +426,18 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn
} }
} }
void UMAAppendMenuItem( MenuRef menu , const wxString& title , wxAcceleratorEntry *entry ) void UMAAppendMenuItem( MenuRef menu , const wxString& title , wxAcceleratorEntry *entry )
{ {
MacAppendMenu(menu, "\pA"); MacAppendMenu(menu, "\pA");
UMASetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), title ); UMASetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), title );
UMASetMenuItemShortcut( menu , (SInt16) ::CountMenuItems(menu), entry ) ; UMASetMenuItemShortcut( menu , (SInt16) ::CountMenuItems(menu), entry ) ;
} }
void UMAInsertMenuItem( MenuRef menu , const wxString& title , MenuItemIndex item , wxAcceleratorEntry *entry ) void UMAInsertMenuItem( MenuRef menu , const wxString& title , MenuItemIndex item , wxAcceleratorEntry *entry )
{ {
MacInsertMenuItem( menu , "\p" , item) ; MacInsertMenuItem( menu , "\pA" , item) ;
UMASetMenuItemText(menu, item , title ); UMASetMenuItemText(menu, item+1 , title );
UMASetMenuItemShortcut( menu , item , entry ) ; UMASetMenuItemShortcut( menu , item+1 , entry ) ;
} }
// quickdraw // quickdraw
@ -481,7 +481,7 @@ pascal QDGlobalsPtr GetQDGlobalsPtr (void)
#endif #endif
void UMAShowWatchCursor() void UMAShowWatchCursor()
{ {
OSErr err = noErr; OSErr err = noErr;
@ -497,14 +497,14 @@ void UMAShowWatchCursor()
// SetQDGlobalsArrow (*watchFob); // SetQDGlobalsArrow (*watchFob);
// InitCursor ( ); // InitCursor ( );
// SetQDGlobalsArrow (&preservedArrow); // SetQDGlobalsArrow (&preservedArrow);
SetCursor (*watchFob); SetCursor (*watchFob);
#else #else
SetCursor (*watchFob); SetCursor (*watchFob);
#endif #endif
} }
} }
void UMAShowArrowCursor() void UMAShowArrowCursor()
{ {
#if TARGET_CARBON #if TARGET_CARBON
Cursor arrow; Cursor arrow;
@ -516,23 +516,23 @@ void UMAShowArrowCursor()
// window manager // window manager
GrafPtr UMAGetWindowPort( WindowRef inWindowRef ) GrafPtr UMAGetWindowPort( WindowRef inWindowRef )
{ {
wxASSERT( inWindowRef != NULL ) ; wxASSERT( inWindowRef != NULL ) ;
#if TARGET_CARBON #if TARGET_CARBON
return (GrafPtr) GetWindowPort( inWindowRef ) ; return (GrafPtr) GetWindowPort( inWindowRef ) ;
#else #else
return (GrafPtr) inWindowRef ; return (GrafPtr) inWindowRef ;
#endif #endif
} }
void UMADisposeWindow( WindowRef inWindowRef ) void UMADisposeWindow( WindowRef inWindowRef )
{ {
wxASSERT( inWindowRef != NULL ) ; wxASSERT( inWindowRef != NULL ) ;
DisposeWindow( inWindowRef ) ; DisposeWindow( inWindowRef ) ;
} }
void UMASetWTitle( WindowRef inWindowRef , const wxString& title ) void UMASetWTitle( WindowRef inWindowRef , const wxString& title )
{ {
#if TARGET_CARBON #if TARGET_CARBON
SetWindowTitleWithCFString( inWindowRef , wxMacCFStringHolder(title) ) ; SetWindowTitleWithCFString( inWindowRef , wxMacCFStringHolder(title) ) ;
@ -543,7 +543,7 @@ void UMASetWTitle( WindowRef inWindowRef , const wxString& title )
#endif #endif
} }
void UMAGetWTitleC( WindowRef inWindowRef , char *title ) void UMAGetWTitleC( WindowRef inWindowRef , char *title )
{ {
GetWTitle( inWindowRef , (unsigned char*)title ) ; GetWTitle( inWindowRef , (unsigned char*)title ) ;
#if TARGET_CARBON #if TARGET_CARBON
@ -555,7 +555,7 @@ void UMAGetWTitleC( WindowRef inWindowRef , char *title )
// appearance additions // appearance additions
void UMASetControlTitle( ControlHandle inControl , const wxString& title ) void UMASetControlTitle( ControlHandle inControl , const wxString& title )
{ {
#if TARGET_CARBON #if TARGET_CARBON
SetControlTitleWithCFString( inControl , wxMacCFStringHolder(title) ) ; SetControlTitleWithCFString( inControl , wxMacCFStringHolder(title) ) ;
@ -566,7 +566,7 @@ void UMASetControlTitle( ControlHandle inControl , const wxString& title )
#endif #endif
} }
void UMAActivateControl( ControlHandle inControl ) void UMAActivateControl( ControlHandle inControl )
{ {
// we have to add the control after again to the update rgn // we have to add the control after again to the update rgn
// otherwise updates get lost // otherwise updates get lost
@ -584,7 +584,7 @@ void UMAActivateControl( ControlHandle inControl )
} }
} }
void UMADrawControl( ControlHandle inControl ) void UMADrawControl( ControlHandle inControl )
{ {
WindowRef theWindow = GetControlOwner(inControl) ; WindowRef theWindow = GetControlOwner(inControl) ;
RgnHandle updateRgn = NewRgn() ; RgnHandle updateRgn = NewRgn() ;
@ -597,7 +597,7 @@ void UMADrawControl( ControlHandle inControl )
DisposeRgn( updateRgn ) ; DisposeRgn( updateRgn ) ;
} }
void UMAMoveControl( ControlHandle inControl , short x , short y ) void UMAMoveControl( ControlHandle inControl , short x , short y )
{ {
bool visible = IsControlVisible( inControl ) ; bool visible = IsControlVisible( inControl ) ;
if ( visible ) { if ( visible ) {
@ -613,14 +613,14 @@ void UMAMoveControl( ControlHandle inControl , short x , short y )
} }
} }
void UMASizeControl( ControlHandle inControl , short x , short y ) void UMASizeControl( ControlHandle inControl , short x , short y )
{ {
bool visible = IsControlVisible( inControl ) ; bool visible = IsControlVisible( inControl ) ;
if ( visible ) { if ( visible ) {
SetControlVisibility( inControl , false , false ) ; SetControlVisibility( inControl , false , false ) ;
Rect ctrlBounds ; Rect ctrlBounds ;
InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
} }
::SizeControl( inControl , x , y ) ; ::SizeControl( inControl , x , y ) ;
if ( visible ) { if ( visible ) {
SetControlVisibility( inControl , true , false ) ; SetControlVisibility( inControl , true , false ) ;
@ -629,7 +629,7 @@ void UMASizeControl( ControlHandle inControl , short x , short y )
} }
} }
void UMADeactivateControl( ControlHandle inControl ) void UMADeactivateControl( ControlHandle inControl )
{ {
// we have to add the control after again to the update rgn // we have to add the control after again to the update rgn
// otherwise updates get lost // otherwise updates get lost
@ -676,32 +676,32 @@ OSErr UMASetKeyboardFocus (WindowPtr inWindow,
// events // events
void UMAUpdateControls( WindowPtr inWindow , RgnHandle inRgn ) void UMAUpdateControls( WindowPtr inWindow , RgnHandle inRgn )
{ {
RgnHandle updateRgn = NewRgn() ; RgnHandle updateRgn = NewRgn() ;
GetWindowUpdateRgn( inWindow , updateRgn ) ; GetWindowUpdateRgn( inWindow , updateRgn ) ;
Point zero = { 0 , 0 } ; Point zero = { 0 , 0 } ;
LocalToGlobal( &zero ) ; LocalToGlobal( &zero ) ;
OffsetRgn( updateRgn , -zero.h , -zero.v ) ; OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
UpdateControls( inWindow , inRgn ) ; UpdateControls( inWindow , inRgn ) ;
InvalWindowRgn( inWindow, updateRgn) ; InvalWindowRgn( inWindow, updateRgn) ;
DisposeRgn( updateRgn ) ; DisposeRgn( updateRgn ) ;
} }
bool UMAIsWindowFloating( WindowRef inWindow ) bool UMAIsWindowFloating( WindowRef inWindow )
{ {
WindowClass cl ; WindowClass cl ;
GetWindowClass( inWindow , &cl ) ; GetWindowClass( inWindow , &cl ) ;
return cl == kFloatingWindowClass ; return cl == kFloatingWindowClass ;
} }
bool UMAIsWindowModal( WindowRef inWindow ) bool UMAIsWindowModal( WindowRef inWindow )
{ {
WindowClass cl ; WindowClass cl ;
GetWindowClass( inWindow , &cl ) ; GetWindowClass( inWindow , &cl ) ;
return cl < kFloatingWindowClass ; return cl < kFloatingWindowClass ;
} }
@ -726,12 +726,12 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate )
UMAActivateControl( control ) ; UMAActivateControl( control ) ;
else else
UMADeactivateControl( control ) ; UMADeactivateControl( control ) ;
} }
SetPort( port ) ; SetPort( port ) ;
} }
} }
OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState ) OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState )
{ {
return ::DrawThemePlacard( inRect , inState ) ; return ::DrawThemePlacard( inRect , inState ) ;
} }
@ -763,7 +763,7 @@ OSStatus UMAGetHelpMenu(
#endif #endif
} }
wxMacPortStateHelper::wxMacPortStateHelper( GrafPtr newport) wxMacPortStateHelper::wxMacPortStateHelper( GrafPtr newport)
{ {
m_clip = NULL ; m_clip = NULL ;
Setup( newport ) ; Setup( newport ) ;
@ -784,7 +784,7 @@ void wxMacPortStateHelper::Setup( GrafPtr newport )
m_textFont = GetPortTextFont( (CGrafPtr) newport); m_textFont = GetPortTextFont( (CGrafPtr) newport);
m_textSize = GetPortTextSize( (CGrafPtr) newport); m_textSize = GetPortTextSize( (CGrafPtr) newport);
m_textStyle = GetPortTextFace( (CGrafPtr) newport); m_textStyle = GetPortTextFace( (CGrafPtr) newport);
m_textMode = GetPortTextMode( (CGrafPtr) newport); m_textMode = GetPortTextMode( (CGrafPtr) newport);
GetThemeDrawingState( &m_drawingState ) ; GetThemeDrawingState( &m_drawingState ) ;
m_currentPort = newport ; m_currentPort = newport ;
} }
@ -821,7 +821,7 @@ OSStatus UMAPutScrap( Size size , OSType type , void *data )
err = PutScrap( size , type , data ) ; err = PutScrap( size , type , data ) ;
#else #else
ScrapRef scrap; ScrapRef scrap;
err = GetCurrentScrap (&scrap); err = GetCurrentScrap (&scrap);
if ( !err ) if ( !err )
{ {
err = PutScrapFlavor (scrap, type , 0, size, data); err = PutScrapFlavor (scrap, type , 0, size, data);

View File

@ -69,7 +69,7 @@ void wxMenu::Init()
m_startRadioGroup = -1; m_startRadioGroup = -1;
// create the menu // create the menu
m_macMenuId = s_macNextMenuId++; m_macMenuId = s_macNextMenuId++;
m_hMenu = UMANewMenu(m_macMenuId, m_title); m_hMenu = UMANewMenu(m_macMenuId, m_title);
if ( !m_hMenu ) if ( !m_hMenu )
@ -116,19 +116,19 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
else else
MacInsertMenuItem(MAC_WXHMENU(m_hMenu), "\p-" , pos); MacInsertMenuItem(MAC_WXHMENU(m_hMenu), "\p-" , pos);
} }
else else
{ {
wxMenu *pSubMenu = pItem->GetSubMenu() ; wxMenu *pSubMenu = pItem->GetSubMenu() ;
if ( pSubMenu != NULL ) if ( pSubMenu != NULL )
{ {
wxASSERT_MSG( pSubMenu->m_hMenu != NULL , wxT("invalid submenu added")); wxASSERT_MSG( pSubMenu->m_hMenu != NULL , wxT("invalid submenu added"));
pSubMenu->m_menuParent = this ; pSubMenu->m_menuParent = this ;
if (wxMenuBar::MacGetInstalledMenuBar() == m_menuBar) if (wxMenuBar::MacGetInstalledMenuBar() == m_menuBar)
{ {
pSubMenu->MacBeforeDisplay( true ) ; pSubMenu->MacBeforeDisplay( true ) ;
} }
if ( pos == (size_t)-1 ) if ( pos == (size_t)-1 )
UMAAppendSubMenuItem(MAC_WXHMENU(m_hMenu), pItem->GetText(), pSubMenu->m_macMenuId); UMAAppendSubMenuItem(MAC_WXHMENU(m_hMenu), pItem->GetText(), pSubMenu->m_macMenuId);
else else
@ -148,12 +148,12 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
UMAInsertMenuItem(MAC_WXHMENU(m_hMenu), wxT("a") , pos); UMAInsertMenuItem(MAC_WXHMENU(m_hMenu), wxT("a") , pos);
} }
SetMenuItemCommandID( MAC_WXHMENU(m_hMenu) , pos , pItem->GetId() ) ; SetMenuItemCommandID( MAC_WXHMENU(m_hMenu) , pos+1 , pItem->GetId() ) ;
pItem->UpdateItemText() ; pItem->UpdateItemText() ;
pItem->UpdateItemBitmap() ; pItem->UpdateItemBitmap() ;
pItem->UpdateItemStatus() ; pItem->UpdateItemStatus() ;
if ( pItem->GetId() == idMenuTitle ) if ( pItem->GetId() == idMenuTitle )
{ {
UMAEnableMenuItem(MAC_WXHMENU(m_hMenu) , pos , false ) ; UMAEnableMenuItem(MAC_WXHMENU(m_hMenu) , pos , false ) ;
} }
@ -311,10 +311,10 @@ wxWindow *wxMenu::GetWindow() const
return NULL; return NULL;
} }
// helper functions returning the mac menu position for a certain item, note that this is // helper functions returning the mac menu position for a certain item, note that this is
// mac-wise 1 - based, i.e. the first item has index 1 whereas on MSWin it has pos 0 // mac-wise 1 - based, i.e. the first item has index 1 whereas on MSWin it has pos 0
int wxMenu::MacGetIndexFromId( int id ) int wxMenu::MacGetIndexFromId( int id )
{ {
size_t pos; size_t pos;
wxMenuItemList::Node *node = GetMenuItems().GetFirst(); wxMenuItemList::Node *node = GetMenuItems().GetFirst();
@ -325,14 +325,14 @@ int wxMenu::MacGetIndexFromId( int id )
node = node->GetNext(); node = node->GetNext();
} }
if (!node) if (!node)
return 0; return 0;
return pos + 1 ; return pos + 1 ;
} }
int wxMenu::MacGetIndexFromItem( wxMenuItem *pItem ) int wxMenu::MacGetIndexFromItem( wxMenuItem *pItem )
{ {
size_t pos; size_t pos;
wxMenuItemList::Node *node = GetMenuItems().GetFirst(); wxMenuItemList::Node *node = GetMenuItems().GetFirst();
@ -346,31 +346,31 @@ int wxMenu::MacGetIndexFromItem( wxMenuItem *pItem )
if (!node) if (!node)
return 0; return 0;
return pos + 1 ; return pos + 1 ;
} }
void wxMenu::MacEnableMenu( bool bDoEnable ) void wxMenu::MacEnableMenu( bool bDoEnable )
{ {
UMAEnableMenuItem(MAC_WXHMENU(m_hMenu) , 0 , bDoEnable ) ; UMAEnableMenuItem(MAC_WXHMENU(m_hMenu) , 0 , bDoEnable ) ;
::DrawMenuBar() ; ::DrawMenuBar() ;
} }
// MacOS needs to know about submenus somewhere within this menu // MacOS needs to know about submenus somewhere within this menu
// before it can be displayed , also hide special menu items like preferences // before it can be displayed , also hide special menu items like preferences
// that are handled by the OS // that are handled by the OS
void wxMenu::MacBeforeDisplay( bool isSubMenu ) void wxMenu::MacBeforeDisplay( bool isSubMenu )
{ {
wxMenuItem* previousItem = NULL ; wxMenuItem* previousItem = NULL ;
size_t pos ; size_t pos ;
wxMenuItemList::Node *node; wxMenuItemList::Node *node;
wxMenuItem *item; wxMenuItem *item;
for (pos = 0, node = GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++) for (pos = 0, node = GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++)
{ {
item = (wxMenuItem *)node->GetData(); item = (wxMenuItem *)node->GetData();
wxMenu* subMenu = item->GetSubMenu() ; wxMenu* subMenu = item->GetSubMenu() ;
if (subMenu) if (subMenu)
{ {
subMenu->MacBeforeDisplay( true ) ; subMenu->MacBeforeDisplay( true ) ;
} }
@ -390,7 +390,7 @@ void wxMenu::MacBeforeDisplay( bool isSubMenu )
} }
} }
} }
#endif #endif
} }
previousItem = item ; previousItem = item ;
} }
@ -400,7 +400,7 @@ void wxMenu::MacBeforeDisplay( bool isSubMenu )
} }
// undo all changes from the MacBeforeDisplay call // undo all changes from the MacBeforeDisplay call
void wxMenu::MacAfterDisplay( bool isSubMenu ) void wxMenu::MacAfterDisplay( bool isSubMenu )
{ {
if ( isSubMenu ) if ( isSubMenu )
::DeleteMenu(MacGetMenuId()); ::DeleteMenu(MacGetMenuId());
@ -409,11 +409,11 @@ void wxMenu::MacAfterDisplay( bool isSubMenu )
int pos ; int pos ;
wxMenuItemList::Node *node; wxMenuItemList::Node *node;
wxMenuItem *item; wxMenuItem *item;
for (pos = 0, node = GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++) for (pos = 0, node = GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++)
{ {
item = (wxMenuItem *)node->GetData(); item = (wxMenuItem *)node->GetData();
wxMenu* subMenu = item->GetSubMenu() ; wxMenu* subMenu = item->GetSubMenu() ;
if (subMenu) if (subMenu)
{ {
subMenu->MacAfterDisplay( true ) ; subMenu->MacAfterDisplay( true ) ;
} }
@ -427,7 +427,7 @@ void wxMenu::MacAfterDisplay( bool isSubMenu )
// Menu Bar // Menu Bar
/* /*
Mac Implementation note : Mac Implementation note :
@ -435,11 +435,11 @@ The Mac has only one global menubar, so we attempt to install the currently
active menubar from a frame, we currently don't take into account mdi-frames active menubar from a frame, we currently don't take into account mdi-frames
which would ask for menu-merging which would ask for menu-merging
Secondly there is no mac api for changing a menubar that is not the current Secondly there is no mac api for changing a menubar that is not the current
menubar, so we have to wait for preparing the actual menubar until the menubar, so we have to wait for preparing the actual menubar until the
wxMenubar is to be used wxMenubar is to be used
We can in subsequent versions use MacInstallMenuBar to provide some sort of We can in subsequent versions use MacInstallMenuBar to provide some sort of
auto-merge for MDI in case this will be necessary auto-merge for MDI in case this will be necessary
*/ */
@ -496,13 +496,13 @@ void wxMenuBar::Refresh(bool WXUNUSED(eraseBackground), const wxRect *WXUNUSED(r
DrawMenuBar(); DrawMenuBar();
} }
void wxMenuBar::MacInstallMenuBar() void wxMenuBar::MacInstallMenuBar()
{ {
if ( s_macInstalledMenuBar == this ) if ( s_macInstalledMenuBar == this )
return ; return ;
wxStAppResource resload ; wxStAppResource resload ;
Handle menubar = ::GetNewMBar( kwxMacMenuBarResource ) ; Handle menubar = ::GetNewMBar( kwxMacMenuBarResource ) ;
wxString message ; wxString message ;
wxCHECK_RET( menubar != NULL, wxT("can't read MBAR resource") ); wxCHECK_RET( menubar != NULL, wxT("can't read MBAR resource") );
@ -520,7 +520,7 @@ void wxMenuBar::MacInstallMenuBar()
::AppendResMenu(menu, 'DRVR'); ::AppendResMenu(menu, 'DRVR');
} }
#endif #endif
// clean-up the help menu before adding new items // clean-up the help menu before adding new items
MenuHandle mh = NULL ; MenuHandle mh = NULL ;
if ( UMAGetHelpMenu( &mh , &firstUserHelpMenuItem) == noErr ) if ( UMAGetHelpMenu( &mh , &firstUserHelpMenuItem) == noErr )
@ -557,16 +557,16 @@ void wxMenuBar::MacInstallMenuBar()
{ {
continue ; continue ;
} }
for (pos = 0 , node = menu->GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++) for (pos = 0 , node = menu->GetMenuItems().GetFirst(); node; node = node->GetNext(), pos++)
{ {
item = (wxMenuItem *)node->GetData(); item = (wxMenuItem *)node->GetData();
subMenu = item->GetSubMenu() ; subMenu = item->GetSubMenu() ;
if (subMenu) if (subMenu)
{ {
// we don't support hierarchical menus in the help menu yet // we don't support hierarchical menus in the help menu yet
} }
else else
{ {
if ( item->IsSeparator() ) if ( item->IsSeparator() )
{ {
@ -578,7 +578,7 @@ void wxMenuBar::MacInstallMenuBar()
wxAcceleratorEntry* entry = wxGetAccelFromString( item->GetText() ) ; wxAcceleratorEntry* entry = wxGetAccelFromString( item->GetText() ) ;
if ( item->GetId() == wxApp::s_macAboutMenuItemId ) if ( item->GetId() == wxApp::s_macAboutMenuItemId )
{ {
UMASetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , item->GetText() ); UMASetMenuItemText( GetMenuHandle( kwxMacAppleMenuId ) , 1 , item->GetText() );
UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 , true ); UMAEnableMenuItem( GetMenuHandle( kwxMacAppleMenuId ) , 1 , true );
SetMenuItemCommandID( GetMenuHandle( kwxMacAppleMenuId ) , 1 , item->GetId() ) ; SetMenuItemCommandID( GetMenuHandle( kwxMacAppleMenuId ) , 1 , item->GetId() ) ;
@ -592,7 +592,7 @@ void wxMenuBar::MacInstallMenuBar()
SetMenuItemCommandID( mh , CountMenuItems(mh) , item->GetId() ) ; SetMenuItemCommandID( mh , CountMenuItems(mh) , item->GetId() ) ;
} }
} }
delete entry ; delete entry ;
} }
} }
@ -652,7 +652,7 @@ int wxMenuBar::FindMenu(const wxString& title)
{ {
wxString title = wxStripMenuCodes(m_titles[i]); wxString title = wxStripMenuCodes(m_titles[i]);
if ( menuTitle == title ) if ( menuTitle == title )
return i; return i;
} }
return wxNOT_FOUND; return wxNOT_FOUND;
@ -762,7 +762,7 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title)
return FALSE; return FALSE;
m_titles.Add(title); m_titles.Add(title);
UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , title ) ; UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , title ) ;
if ( IsAttached() ) if ( IsAttached() )

View File

@ -33,7 +33,7 @@
// since we have decided that we only support 8.6 upwards we are // since we have decided that we only support 8.6 upwards we are
// checking for these minimum requirements in the startup code of // 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 wxWindows code can safely assume that appearance 1.1
// windows manager, control manager, navigation services etc. are // windows manager, control manager, navigation services etc. are
// present // present
static bool sUMAHasAppearance = false ; static bool sUMAHasAppearance = false ;
@ -90,7 +90,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
if ( Gestalt(gestaltSystemVersion, &sUMASystemVersion) != noErr) if ( Gestalt(gestaltSystemVersion, &sUMASystemVersion) != noErr)
sUMASystemVersion = 0x0000 ; sUMASystemVersion = 0x0000 ;
long theAppearance ; long theAppearance ;
if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr ) if ( Gestalt( gestaltAppearanceAttr, &theAppearance ) == noErr )
{ {
@ -109,7 +109,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
{ {
sUMAHasWindowManager = sUMAWindowManagerAttr & gestaltWindowMgrPresent ; sUMAHasWindowManager = sUMAWindowManagerAttr & gestaltWindowMgrPresent ;
} }
#if TARGET_CARBON #if TARGET_CARBON
// Call currently implicitely done : InitFloatingWindows() ; // Call currently implicitely done : InitFloatingWindows() ;
#else #else
@ -130,7 +130,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
sUMAHasAquaLayout = true ; sUMAHasAquaLayout = true ;
if ( TXNInitTextension != (void*) kUnresolvedCFragSymbolAddress ) if ( TXNInitTextension != (void*) kUnresolvedCFragSymbolAddress )
{ {
FontFamilyID fontId ; FontFamilyID fontId ;
Str255 fontName ; Str255 fontName ;
SInt16 fontSize ; SInt16 fontSize ;
@ -143,7 +143,7 @@ void UMAInitToolbox( UInt16 inMoreMastersCalls )
{ fontId , (fontSize << 16) ,kTXNDefaultFontStyle, kTXNSystemDefaultEncoding } , { fontId , (fontSize << 16) ,kTXNDefaultFontStyle, kTXNSystemDefaultEncoding } ,
} ; } ;
int noOfFontDescriptions = sizeof( fontDescriptions ) / sizeof(TXNMacOSPreferredFontDescription) ; int noOfFontDescriptions = sizeof( fontDescriptions ) / sizeof(TXNMacOSPreferredFontDescription) ;
#if 0 // TARGET_CARBON #if 0 // TARGET_CARBON
--noOfFontDescriptions ; --noOfFontDescriptions ;
#endif #endif
// kTXNAlwaysUseQuickDrawTextMask might be desirable because of speed increases but it crashes the app under OS X upon key stroke // kTXNAlwaysUseQuickDrawTextMask might be desirable because of speed increases but it crashes the app under OS X upon key stroke
@ -171,12 +171,12 @@ Boolean CanUseATSUI()
} }
*/ */
// process manager // process manager
long UMAGetProcessMode() long UMAGetProcessMode()
{ {
OSErr err ; OSErr err ;
ProcessInfoRec processinfo; ProcessInfoRec processinfo;
ProcessSerialNumber procno ; ProcessSerialNumber procno ;
procno.highLongOfPSN = NULL ; procno.highLongOfPSN = NULL ;
procno.lowLongOfPSN = kCurrentProcess ; procno.lowLongOfPSN = kCurrentProcess ;
processinfo.processInfoLength = sizeof(ProcessInfoRec); processinfo.processInfoLength = sizeof(ProcessInfoRec);
@ -188,7 +188,7 @@ long UMAGetProcessMode()
return processinfo.processMode ; return processinfo.processMode ;
} }
bool UMAGetProcessModeDoesActivateOnFGSwitch() bool UMAGetProcessModeDoesActivateOnFGSwitch()
{ {
return UMAGetProcessMode() & modeDoesActivateOnFGSwitch ; return UMAGetProcessMode() & modeDoesActivateOnFGSwitch ;
} }
@ -222,7 +222,7 @@ void UMASetMenuTitle( MenuRef menu , const wxString& title )
#endif #endif
} }
void UMASetMenuItemText( MenuRef menu, MenuItemIndex item, const wxString& title ) void UMASetMenuItemText( MenuRef menu, MenuItemIndex item, const wxString& title )
{ {
wxString str = wxStripMenuCodes( title ) ; wxString str = wxStripMenuCodes( title ) ;
#if TARGET_CARBON #if TARGET_CARBON
@ -240,7 +240,7 @@ UInt32 UMAMenuEvent( EventRecord *inEvent )
return MenuEvent( inEvent ) ; return MenuEvent( inEvent ) ;
} }
void UMAEnableMenuItem( MenuRef inMenu , MenuItemIndex inItem , bool enable) void UMAEnableMenuItem( MenuRef inMenu , MenuItemIndex inItem , bool enable)
{ {
if ( enable ) if ( enable )
EnableMenuItem( inMenu , inItem ) ; EnableMenuItem( inMenu , inItem ) ;
@ -248,14 +248,14 @@ void UMAEnableMenuItem( MenuRef inMenu , MenuItemIndex inItem , bool enable)
DisableMenuItem( inMenu , inItem ) ; DisableMenuItem( inMenu , inItem ) ;
} }
void UMAAppendSubMenuItem( MenuRef menu , const wxString& title , SInt16 id ) void UMAAppendSubMenuItem( MenuRef menu , const wxString& title , SInt16 id )
{ {
MacAppendMenu(menu, "\pA"); MacAppendMenu(menu, "\pA");
UMASetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), title ); UMASetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), title );
SetMenuItemHierarchicalID( menu , CountMenuItems( menu ) , id ) ; SetMenuItemHierarchicalID( menu , CountMenuItems( menu ) , id ) ;
} }
void UMAInsertSubMenuItem( MenuRef menu , const wxString& title , MenuItemIndex item , SInt16 id ) void UMAInsertSubMenuItem( MenuRef menu , const wxString& title , MenuItemIndex item , SInt16 id )
{ {
MacInsertMenuItem(menu, "\pA" , item); MacInsertMenuItem(menu, "\pA" , item);
UMASetMenuItemText(menu, item , title ); UMASetMenuItemText(menu, item , title );
@ -266,24 +266,24 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn
{ {
if ( !entry ) if ( !entry )
return ; return ;
UInt8 modifiers = 0 ; UInt8 modifiers = 0 ;
SInt16 key = entry->GetKeyCode() ; SInt16 key = entry->GetKeyCode() ;
if ( key ) if ( key )
{ {
bool explicitCommandKey = false ; bool explicitCommandKey = false ;
if ( entry->GetFlags() & wxACCEL_CTRL ) if ( entry->GetFlags() & wxACCEL_CTRL )
{ {
explicitCommandKey = true ; explicitCommandKey = true ;
} }
if (entry->GetFlags() & wxACCEL_ALT ) if (entry->GetFlags() & wxACCEL_ALT )
{ {
modifiers |= kMenuOptionModifier ; modifiers |= kMenuOptionModifier ;
} }
if (entry->GetFlags() & wxACCEL_SHIFT) if (entry->GetFlags() & wxACCEL_SHIFT)
{ {
modifiers |= kMenuShiftModifier ; modifiers |= kMenuShiftModifier ;
} }
@ -298,7 +298,7 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn
glyph += 13 ; glyph += 13 ;
if ( !explicitCommandKey ) if ( !explicitCommandKey )
modifiers |= kMenuNoCommandModifier ; modifiers |= kMenuNoCommandModifier ;
switch( key ) switch( key )
{ {
case WXK_F1 : case WXK_F1 :
@ -426,18 +426,18 @@ void UMASetMenuItemShortcut( MenuRef menu , MenuItemIndex item , wxAcceleratorEn
} }
} }
void UMAAppendMenuItem( MenuRef menu , const wxString& title , wxAcceleratorEntry *entry ) void UMAAppendMenuItem( MenuRef menu , const wxString& title , wxAcceleratorEntry *entry )
{ {
MacAppendMenu(menu, "\pA"); MacAppendMenu(menu, "\pA");
UMASetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), title ); UMASetMenuItemText(menu, (SInt16) ::CountMenuItems(menu), title );
UMASetMenuItemShortcut( menu , (SInt16) ::CountMenuItems(menu), entry ) ; UMASetMenuItemShortcut( menu , (SInt16) ::CountMenuItems(menu), entry ) ;
} }
void UMAInsertMenuItem( MenuRef menu , const wxString& title , MenuItemIndex item , wxAcceleratorEntry *entry ) void UMAInsertMenuItem( MenuRef menu , const wxString& title , MenuItemIndex item , wxAcceleratorEntry *entry )
{ {
MacInsertMenuItem( menu , "\p" , item) ; MacInsertMenuItem( menu , "\pA" , item) ;
UMASetMenuItemText(menu, item , title ); UMASetMenuItemText(menu, item+1 , title );
UMASetMenuItemShortcut( menu , item , entry ) ; UMASetMenuItemShortcut( menu , item+1 , entry ) ;
} }
// quickdraw // quickdraw
@ -481,7 +481,7 @@ pascal QDGlobalsPtr GetQDGlobalsPtr (void)
#endif #endif
void UMAShowWatchCursor() void UMAShowWatchCursor()
{ {
OSErr err = noErr; OSErr err = noErr;
@ -497,14 +497,14 @@ void UMAShowWatchCursor()
// SetQDGlobalsArrow (*watchFob); // SetQDGlobalsArrow (*watchFob);
// InitCursor ( ); // InitCursor ( );
// SetQDGlobalsArrow (&preservedArrow); // SetQDGlobalsArrow (&preservedArrow);
SetCursor (*watchFob); SetCursor (*watchFob);
#else #else
SetCursor (*watchFob); SetCursor (*watchFob);
#endif #endif
} }
} }
void UMAShowArrowCursor() void UMAShowArrowCursor()
{ {
#if TARGET_CARBON #if TARGET_CARBON
Cursor arrow; Cursor arrow;
@ -516,23 +516,23 @@ void UMAShowArrowCursor()
// window manager // window manager
GrafPtr UMAGetWindowPort( WindowRef inWindowRef ) GrafPtr UMAGetWindowPort( WindowRef inWindowRef )
{ {
wxASSERT( inWindowRef != NULL ) ; wxASSERT( inWindowRef != NULL ) ;
#if TARGET_CARBON #if TARGET_CARBON
return (GrafPtr) GetWindowPort( inWindowRef ) ; return (GrafPtr) GetWindowPort( inWindowRef ) ;
#else #else
return (GrafPtr) inWindowRef ; return (GrafPtr) inWindowRef ;
#endif #endif
} }
void UMADisposeWindow( WindowRef inWindowRef ) void UMADisposeWindow( WindowRef inWindowRef )
{ {
wxASSERT( inWindowRef != NULL ) ; wxASSERT( inWindowRef != NULL ) ;
DisposeWindow( inWindowRef ) ; DisposeWindow( inWindowRef ) ;
} }
void UMASetWTitle( WindowRef inWindowRef , const wxString& title ) void UMASetWTitle( WindowRef inWindowRef , const wxString& title )
{ {
#if TARGET_CARBON #if TARGET_CARBON
SetWindowTitleWithCFString( inWindowRef , wxMacCFStringHolder(title) ) ; SetWindowTitleWithCFString( inWindowRef , wxMacCFStringHolder(title) ) ;
@ -543,7 +543,7 @@ void UMASetWTitle( WindowRef inWindowRef , const wxString& title )
#endif #endif
} }
void UMAGetWTitleC( WindowRef inWindowRef , char *title ) void UMAGetWTitleC( WindowRef inWindowRef , char *title )
{ {
GetWTitle( inWindowRef , (unsigned char*)title ) ; GetWTitle( inWindowRef , (unsigned char*)title ) ;
#if TARGET_CARBON #if TARGET_CARBON
@ -555,7 +555,7 @@ void UMAGetWTitleC( WindowRef inWindowRef , char *title )
// appearance additions // appearance additions
void UMASetControlTitle( ControlHandle inControl , const wxString& title ) void UMASetControlTitle( ControlHandle inControl , const wxString& title )
{ {
#if TARGET_CARBON #if TARGET_CARBON
SetControlTitleWithCFString( inControl , wxMacCFStringHolder(title) ) ; SetControlTitleWithCFString( inControl , wxMacCFStringHolder(title) ) ;
@ -566,7 +566,7 @@ void UMASetControlTitle( ControlHandle inControl , const wxString& title )
#endif #endif
} }
void UMAActivateControl( ControlHandle inControl ) void UMAActivateControl( ControlHandle inControl )
{ {
// we have to add the control after again to the update rgn // we have to add the control after again to the update rgn
// otherwise updates get lost // otherwise updates get lost
@ -584,7 +584,7 @@ void UMAActivateControl( ControlHandle inControl )
} }
} }
void UMADrawControl( ControlHandle inControl ) void UMADrawControl( ControlHandle inControl )
{ {
WindowRef theWindow = GetControlOwner(inControl) ; WindowRef theWindow = GetControlOwner(inControl) ;
RgnHandle updateRgn = NewRgn() ; RgnHandle updateRgn = NewRgn() ;
@ -597,7 +597,7 @@ void UMADrawControl( ControlHandle inControl )
DisposeRgn( updateRgn ) ; DisposeRgn( updateRgn ) ;
} }
void UMAMoveControl( ControlHandle inControl , short x , short y ) void UMAMoveControl( ControlHandle inControl , short x , short y )
{ {
bool visible = IsControlVisible( inControl ) ; bool visible = IsControlVisible( inControl ) ;
if ( visible ) { if ( visible ) {
@ -613,14 +613,14 @@ void UMAMoveControl( ControlHandle inControl , short x , short y )
} }
} }
void UMASizeControl( ControlHandle inControl , short x , short y ) void UMASizeControl( ControlHandle inControl , short x , short y )
{ {
bool visible = IsControlVisible( inControl ) ; bool visible = IsControlVisible( inControl ) ;
if ( visible ) { if ( visible ) {
SetControlVisibility( inControl , false , false ) ; SetControlVisibility( inControl , false , false ) ;
Rect ctrlBounds ; Rect ctrlBounds ;
InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ; InvalWindowRect(GetControlOwner(inControl),GetControlBounds(inControl,&ctrlBounds) ) ;
} }
::SizeControl( inControl , x , y ) ; ::SizeControl( inControl , x , y ) ;
if ( visible ) { if ( visible ) {
SetControlVisibility( inControl , true , false ) ; SetControlVisibility( inControl , true , false ) ;
@ -629,7 +629,7 @@ void UMASizeControl( ControlHandle inControl , short x , short y )
} }
} }
void UMADeactivateControl( ControlHandle inControl ) void UMADeactivateControl( ControlHandle inControl )
{ {
// we have to add the control after again to the update rgn // we have to add the control after again to the update rgn
// otherwise updates get lost // otherwise updates get lost
@ -676,32 +676,32 @@ OSErr UMASetKeyboardFocus (WindowPtr inWindow,
// events // events
void UMAUpdateControls( WindowPtr inWindow , RgnHandle inRgn ) void UMAUpdateControls( WindowPtr inWindow , RgnHandle inRgn )
{ {
RgnHandle updateRgn = NewRgn() ; RgnHandle updateRgn = NewRgn() ;
GetWindowUpdateRgn( inWindow , updateRgn ) ; GetWindowUpdateRgn( inWindow , updateRgn ) ;
Point zero = { 0 , 0 } ; Point zero = { 0 , 0 } ;
LocalToGlobal( &zero ) ; LocalToGlobal( &zero ) ;
OffsetRgn( updateRgn , -zero.h , -zero.v ) ; OffsetRgn( updateRgn , -zero.h , -zero.v ) ;
UpdateControls( inWindow , inRgn ) ; UpdateControls( inWindow , inRgn ) ;
InvalWindowRgn( inWindow, updateRgn) ; InvalWindowRgn( inWindow, updateRgn) ;
DisposeRgn( updateRgn ) ; DisposeRgn( updateRgn ) ;
} }
bool UMAIsWindowFloating( WindowRef inWindow ) bool UMAIsWindowFloating( WindowRef inWindow )
{ {
WindowClass cl ; WindowClass cl ;
GetWindowClass( inWindow , &cl ) ; GetWindowClass( inWindow , &cl ) ;
return cl == kFloatingWindowClass ; return cl == kFloatingWindowClass ;
} }
bool UMAIsWindowModal( WindowRef inWindow ) bool UMAIsWindowModal( WindowRef inWindow )
{ {
WindowClass cl ; WindowClass cl ;
GetWindowClass( inWindow , &cl ) ; GetWindowClass( inWindow , &cl ) ;
return cl < kFloatingWindowClass ; return cl < kFloatingWindowClass ;
} }
@ -726,12 +726,12 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate )
UMAActivateControl( control ) ; UMAActivateControl( control ) ;
else else
UMADeactivateControl( control ) ; UMADeactivateControl( control ) ;
} }
SetPort( port ) ; SetPort( port ) ;
} }
} }
OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState ) OSStatus UMADrawThemePlacard( const Rect *inRect , ThemeDrawState inState )
{ {
return ::DrawThemePlacard( inRect , inState ) ; return ::DrawThemePlacard( inRect , inState ) ;
} }
@ -763,7 +763,7 @@ OSStatus UMAGetHelpMenu(
#endif #endif
} }
wxMacPortStateHelper::wxMacPortStateHelper( GrafPtr newport) wxMacPortStateHelper::wxMacPortStateHelper( GrafPtr newport)
{ {
m_clip = NULL ; m_clip = NULL ;
Setup( newport ) ; Setup( newport ) ;
@ -784,7 +784,7 @@ void wxMacPortStateHelper::Setup( GrafPtr newport )
m_textFont = GetPortTextFont( (CGrafPtr) newport); m_textFont = GetPortTextFont( (CGrafPtr) newport);
m_textSize = GetPortTextSize( (CGrafPtr) newport); m_textSize = GetPortTextSize( (CGrafPtr) newport);
m_textStyle = GetPortTextFace( (CGrafPtr) newport); m_textStyle = GetPortTextFace( (CGrafPtr) newport);
m_textMode = GetPortTextMode( (CGrafPtr) newport); m_textMode = GetPortTextMode( (CGrafPtr) newport);
GetThemeDrawingState( &m_drawingState ) ; GetThemeDrawingState( &m_drawingState ) ;
m_currentPort = newport ; m_currentPort = newport ;
} }
@ -821,7 +821,7 @@ OSStatus UMAPutScrap( Size size , OSType type , void *data )
err = PutScrap( size , type , data ) ; err = PutScrap( size , type , data ) ;
#else #else
ScrapRef scrap; ScrapRef scrap;
err = GetCurrentScrap (&scrap); err = GetCurrentScrap (&scrap);
if ( !err ) if ( !err )
{ {
err = PutScrapFlavor (scrap, type , 0, size, data); err = PutScrapFlavor (scrap, type , 0, size, data);