// Created: 2003/09/04
// RCS-ID: $Id$
// Copyright: (c) 2003 David Elliott
-// Licence: wxWindows licence
+// Licence: wxWidgets licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
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);
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