// Destroy menubar, but keep data structures intact so we can recreate it. bool wxMenuBar::DestroyMenuBar() { if (!m_mainWidget) { SetMenuBarFrame(NULL); return false; } XtUnmanageChild ((Widget) m_mainWidget); XtUnrealizeWidget ((Widget) m_mainWidget); size_t menuCount = GetMenuCount(); for (size_t i = 0; i < menuCount; i++) { wxMenu *menu = GetMenu(i); menu->DestroyMenu(true); } XtDestroyWidget((Widget) m_mainWidget); m_mainWidget = (WXWidget) 0; SetMenuBarFrame(NULL); return true; }
// Destroy menubar, but keep data structures intact so we can recreate it. bool wxMenuBar::DestroyMenuBar() { if (!m_mainWidget) { SetMenuBarFrame(NULL); return false; } XtUnmanageChild ((Widget) m_mainWidget); XtUnrealizeWidget ((Widget) m_mainWidget); size_t menuCount = GetMenuCount(); #if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */ # pragma ivdep # pragma swp # pragma unroll # pragma prefetch # if 0 # pragma simd noassert # endif #endif /* VDM auto patch */ for (size_t i = 0; i < menuCount; i++) { wxMenu *menu = GetMenu(i); menu->DestroyMenu(true); } XtDestroyWidget((Widget) m_mainWidget); m_mainWidget = (WXWidget) 0; SetMenuBarFrame(NULL); return true; }
// Create menubar bool wxMenuBar::CreateMenuBar(wxFrame* parent) { m_parent = parent; // bleach... override it! PreCreation(); m_parent = NULL; if (m_mainWidget) { XtVaSetValues((Widget) parent->GetMainWidget(), XmNmenuBar, (Widget) m_mainWidget, NULL); /* if (!XtIsManaged((Widget) m_mainWidget)) XtManageChild((Widget) m_mainWidget); */ XtMapWidget((Widget) m_mainWidget); return true; } Widget menuBarW = XmCreateMenuBar ((Widget) parent->GetMainWidget(), wxMOTIF_STR("MenuBar"), NULL, 0); m_mainWidget = (WXWidget) menuBarW; size_t menuCount = GetMenuCount(); for (size_t i = 0; i < menuCount; i++) { wxMenu *menu = GetMenu(i); wxString title(m_titles[i]); menu->SetButtonWidget(menu->CreateMenu (this, menuBarW, menu, i, title, true)); if (strcmp (wxStripMenuCodes(title), "Help") == 0) XtVaSetValues ((Widget) menuBarW, XmNmenuHelpWidget, (Widget) menu->GetButtonWidget(), NULL); // tear off menu support #if (XmVersion >= 1002) if ( menu->IsTearOff() ) { XtVaSetValues(GetWidget(menu), XmNtearOffModel, XmTEAR_OFF_ENABLED, NULL); Widget tearOff = XmGetTearOffControl(GetWidget(menu)); wxDoChangeForegroundColour((Widget) tearOff, m_foregroundColour); wxDoChangeBackgroundColour((Widget) tearOff, m_backgroundColour, true); } #endif } PostCreation(); XtVaSetValues((Widget) parent->GetMainWidget(), XmNmenuBar, (Widget) m_mainWidget, NULL); XtRealizeWidget ((Widget) menuBarW); XtManageChild ((Widget) menuBarW); SetMenuBarFrame(parent); return true; }