af8491078d
never used directly but only to look up the associated wxCocoaNSWindow. If the wxCocoaNSWindow cannot be found later in UpdateMenuBar then it's likely been destroyed but no crash will result as before. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26720 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
72 lines
2.4 KiB
C++
72 lines
2.4 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/cocoa/mbarman.h
|
|
// Purpose: wxMenuBarManager class
|
|
// Author: David Elliott
|
|
// Modified by:
|
|
// Created: 2003/09/04
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 2003 David Elliott
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __WX_COCOA_MBARMAN_H__
|
|
#define __WX_COCOA_MBARMAN_H__
|
|
|
|
#if wxUSE_MENUS
|
|
|
|
#include "wx/toplevel.h"
|
|
|
|
DECLARE_WXCOCOA_OBJC_CLASS(wxMenuBarManagerObserver);
|
|
|
|
// ========================================================================
|
|
// wxMenuBarManager
|
|
// ========================================================================
|
|
class WXDLLEXPORT wxMenuBarManager : public wxObject
|
|
{
|
|
// ------------------------------------------------------------------------
|
|
// initialization/destruction
|
|
// ------------------------------------------------------------------------
|
|
public:
|
|
wxMenuBarManager();
|
|
virtual ~wxMenuBarManager();
|
|
// ------------------------------------------------------------------------
|
|
// Single instance
|
|
// ------------------------------------------------------------------------
|
|
public:
|
|
static wxMenuBarManager *GetInstance() { return sm_mbarmanInstance; }
|
|
static void CreateInstance();
|
|
static void DestroyInstance();
|
|
protected:
|
|
static wxMenuBarManager *sm_mbarmanInstance;
|
|
// ------------------------------------------------------------------------
|
|
// Implementation
|
|
// ------------------------------------------------------------------------
|
|
public:
|
|
void SetMainMenuBar(wxMenuBar* menubar);
|
|
void WindowDidBecomeKey(NSNotification *notification);
|
|
#if 0
|
|
void WindowDidResignKey(NSNotification *notification);
|
|
void WindowDidBecomeMain(NSNotification *notification);
|
|
void WindowDidResignMain(NSNotification *notification);
|
|
void WindowWillClose(NSNotification *notification);
|
|
#endif // 0
|
|
void UpdateMenuBar();
|
|
protected:
|
|
void SetMenuBar(wxMenuBar* menubar);
|
|
void InstallMenuBarForWindow(wxCocoaNSWindow *win);
|
|
void InstallMainMenu();
|
|
WX_NSMenu m_menuApp;
|
|
WX_NSMenu m_menuServices;
|
|
WX_NSMenu m_menuWindows;
|
|
WX_NSMenu m_menuMain;
|
|
// Is main menu bar the current one
|
|
bool m_mainMenuBarInstalled;
|
|
// Main menu (if app provides one)
|
|
wxMenuBar *m_mainMenuBar;
|
|
wxMenuBarManagerObserver *m_observer;
|
|
WX_NSWindow m_currentNSWindow;
|
|
};
|
|
|
|
#endif // wxUSE_MENUS
|
|
#endif // _WX_COCOA_MBARMAN_H_
|