MCPcopy Create free account
hub / github.com/WinMerge/winmerge / ReloadMenu

Method ReloadMenu

Src/MainFrm.cpp:3486–3563  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3484}
3485
3486void CMainFrame::ReloadMenu()
3487{
3488 // set the menu of the main frame window
3489 UINT idMenu = IDR_MAINFRAME;
3490 CMergeApp *pApp = dynamic_cast<CMergeApp *> (AfxGetApp());
3491 CMainFrame * pMainFrame = dynamic_cast<CMainFrame *> ((CFrameWnd*)pApp->m_pMainWnd);
3492 HMENU hNewDefaultMenu = pMainFrame->NewDefaultMenu(idMenu);
3493 HMENU hNewMergeMenu = pMainFrame->NewMergeViewMenu();
3494 HMENU hNewImgMergeMenu = pMainFrame->NewImgMergeViewMenu();
3495 HMENU hNewWebPageDiffMenu = pMainFrame->NewWebPageDiffViewMenu();
3496 HMENU hNewDirMenu = pMainFrame->NewDirViewMenu();
3497 if (hNewDefaultMenu != nullptr && hNewMergeMenu != nullptr && hNewDirMenu != nullptr)
3498 {
3499 // Note : for Windows98 compatibility, use FromHandle and not Attach/Detach
3500 CMenu * pNewDefaultMenu = CMenu::FromHandle(hNewDefaultMenu);
3501 CMenu * pNewMergeMenu = CMenu::FromHandle(hNewMergeMenu);
3502 CMenu * pNewImgMergeMenu = CMenu::FromHandle(hNewImgMergeMenu);
3503 CMenu * pNewWebPageDiffMenu = CMenu::FromHandle(hNewWebPageDiffMenu);
3504 CMenu * pNewDirMenu = CMenu::FromHandle(hNewDirMenu);
3505
3506 CWnd *pFrame = CWnd::FromHandle(::GetWindow(pMainFrame->m_hWndMDIClient, GW_CHILD));
3507 while (pFrame != nullptr)
3508 {
3509 if (pFrame->IsKindOf(RUNTIME_CLASS(CMergeEditFrame)))
3510 static_cast<CMergeEditFrame *>(pFrame)->SetSharedMenu(hNewMergeMenu);
3511 if (pFrame->IsKindOf(RUNTIME_CLASS(CHexMergeFrame)))
3512 static_cast<CHexMergeFrame *>(pFrame)->SetSharedMenu(hNewMergeMenu);
3513 if (pFrame->IsKindOf(RUNTIME_CLASS(CImgMergeFrame)))
3514 static_cast<CImgMergeFrame *>(pFrame)->SetSharedMenu(hNewImgMergeMenu);
3515 if (pFrame->IsKindOf(RUNTIME_CLASS(CWebPageDiffFrame)))
3516 static_cast<CWebPageDiffFrame *>(pFrame)->SetSharedMenu(hNewWebPageDiffMenu);
3517 else if (pFrame->IsKindOf(RUNTIME_CLASS(COpenFrame)))
3518 static_cast<COpenFrame *>(pFrame)->SetSharedMenu(hNewDefaultMenu);
3519 else if (pFrame->IsKindOf(RUNTIME_CLASS(CDirFrame)))
3520 static_cast<CDirFrame *>(pFrame)->SetSharedMenu(hNewDirMenu);
3521 pFrame = pFrame->GetNextWindow();
3522 }
3523
3524 CFrameWnd *pActiveFrame = pMainFrame->GetActiveFrame();
3525 if (pActiveFrame != nullptr)
3526 {
3527 if (pActiveFrame->IsKindOf(RUNTIME_CLASS(CMergeEditFrame)))
3528 pMainFrame->MDISetMenu(pNewMergeMenu, nullptr);
3529 else if (pActiveFrame->IsKindOf(RUNTIME_CLASS(CHexMergeFrame)))
3530 pMainFrame->MDISetMenu(pNewMergeMenu, nullptr);
3531 else if (pActiveFrame->IsKindOf(RUNTIME_CLASS(CImgMergeFrame)))
3532 pMainFrame->MDISetMenu(pNewImgMergeMenu, nullptr);
3533 else if (pActiveFrame->IsKindOf(RUNTIME_CLASS(CWebPageDiffFrame)))
3534 pMainFrame->MDISetMenu(pNewWebPageDiffMenu, nullptr);
3535 else if (pActiveFrame->IsKindOf(RUNTIME_CLASS(CDirFrame)))
3536 pMainFrame->MDISetMenu(pNewDirMenu, nullptr);
3537 else
3538 pMainFrame->MDISetMenu(pNewDefaultMenu, nullptr);
3539 }
3540 else
3541 pMainFrame->MDISetMenu(pNewDefaultMenu, nullptr);
3542
3543 // Don't delete the old menu

Callers

nothing calls this directly

Calls 9

NewDefaultMenuMethod · 0.80
NewMergeViewMenuMethod · 0.80
NewImgMergeViewMenuMethod · 0.80
NewDirViewMenuMethod · 0.80
SetSharedMenuMethod · 0.80
GetOpenTemplateMethod · 0.80
GetDiffTemplateMethod · 0.80
GetDirTemplateMethod · 0.80

Tested by

no test coverage detected