// Created: 2003/09/04
// RCS-ID: $Id$
// Copyright: (c) 2003 David Elliott
-// Licence: wxWindows licence
+// Licence: wxWidgets licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
#import <AppKit/NSApplication.h>
#import <AppKit/NSWindow.h>
+// Declare setAppleMenu: in an NSApplication category since Tiger and later
+// releases support it but don't declare it as it's considered deprecated.
+@interface NSApplication(wxDeprecatedMethodsWeWantToUse)
+- (void)setAppleMenu:(NSMenu *)menu;
+@end
+
// ============================================================================
// wxMenuBarManagerObserver
// ============================================================================
@implementation wxMenuBarManagerObserver : NSObject
- (id)init
{
- wxFAIL_MSG("[wxMenuBarManagerObserver -init] should never be called!");
+ wxFAIL_MSG(wxT("[wxMenuBarManagerObserver -init] should never be called!"));
m_mbarman = NULL;
return self;
}
m_menuMain = nil;
m_mainMenuBarInstalled = true;
m_mainMenuBar = NULL;
- m_windowCurrent = NULL;
+ m_currentNSWindow = nil;
NSApplication *theNSApplication = wxTheApp->GetNSApplication();
// Create the services menu.
void wxMenuBarManager::WindowDidBecomeKey(NSNotification *notification)
{
- wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa([notification object]);
+ /* NOTE: m_currentNSWindow might be destroyed but we only ever use it
+ to look it up in the hash table. Do not send messages to it. */
+ m_currentNSWindow = [notification object];
+ wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa(m_currentNSWindow);
if(win)
InstallMenuBarForWindow(win);
else
void wxMenuBarManager::InstallMenuBarForWindow(wxCocoaNSWindow *win)
{
wxASSERT(win);
- m_windowCurrent = win;
wxMenuBar *menubar = win->GetAppMenuBar(win);
- wxLogDebug("Found menubar=%p for window=%p.",menubar,win);
+ wxLogTrace(wxTRACE_COCOA,wxT("Found menubar=%p for window=%p."),menubar,win);
SetMenuBar(menubar);
}
void wxMenuBarManager::UpdateMenuBar()
{
- if(m_windowCurrent)
- InstallMenuBarForWindow(m_windowCurrent);
+ if(m_currentNSWindow)
+ {
+ wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa(m_currentNSWindow);
+ if(win)
+ InstallMenuBarForWindow(win);
+ }
}
#endif // wxUSE_MENUS