diff --git a/BeefLibs/Beefy2D/src/sys/SysMenu.bf b/BeefLibs/Beefy2D/src/sys/SysMenu.bf index a125a554..98ab168f 100644 --- a/BeefLibs/Beefy2D/src/sys/SysMenu.bf +++ b/BeefLibs/Beefy2D/src/sys/SysMenu.bf @@ -3,6 +3,7 @@ using System.Collections; using System.Text; using Beefy.widgets; using Beefy; +using System.Diagnostics; namespace Beefy.sys { @@ -22,10 +23,6 @@ namespace Beefy.sys public Event mOnMenuItemUpdate ~ _.Dispose(); public List mChildren ~ DeleteContainerAndItems!(_); - public this() - { - } - public int ChildCount { get @@ -135,6 +132,8 @@ namespace Beefy.sys { mWindow.mSysMenuMap.Remove((int)mNativeBFMenu); mWindow.DeleteMenuItem(mNativeBFMenu); + if (mParent != null) + mParent.mChildren.Remove(this); } public void UpdateChildItems() diff --git a/BeefySysLib/platform/win/WinBFApp.cpp b/BeefySysLib/platform/win/WinBFApp.cpp index de5938cb..33aaea1f 100644 --- a/BeefySysLib/platform/win/WinBFApp.cpp +++ b/BeefySysLib/platform/win/WinBFApp.cpp @@ -2131,8 +2131,9 @@ void WinBFWindow::RemoveMenuItem(BFMenu* item) WinBFMenu* aMenu = (WinBFMenu*) item; WinBFMenu* parentMenu = (WinBFMenu*) item->mParent; - //auto itr = mMenuIDMap.find(aMenu->mMenuId); - //mMenuIDMap.erase(itr); + if (parentMenu != NULL) + parentMenu->mBFMenuList.Remove(item); + mMenuIDMap.Remove(aMenu->mMenuId); ::RemoveMenu(parentMenu->mMenu, aMenu->mMenuId, MF_BYCOMMAND); diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index 77cdb203..519b93ed 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -5189,13 +5189,16 @@ namespace IDE [IDECommand] public void ReloadSettings() { - delete mSettings; - mSettings = new .(); + var prevSettings = mSettings; + defer delete prevSettings; + mSettings = new .(prevSettings); DeleteAndNullify!(mKeyChordState); mSettings.Load(); mSettings.Apply(); + UpdateRecentFileMenuItems(); + UpdateRecentDisplayedFilesMenuItems(); } public void CheckReloadSettings() diff --git a/IDE/src/Settings.bf b/IDE/src/Settings.bf index 1bd1d217..ec6d2d69 100644 --- a/IDE/src/Settings.bf +++ b/IDE/src/Settings.bf @@ -1106,12 +1106,24 @@ namespace IDE public bool mEnableDevMode; public TutorialsFinished mTutorialsFinished = .(); - public this() { SetDefaults(); } + public this(Settings prevSettings) + { + Swap!(mRecentFiles, prevSettings.mRecentFiles); + + for (var recent in mRecentFiles.mRecents) + { + recent.mList.ClearAndDeleteItems(); + for (var item in recent.mMenuItems) + item.Dispose(); + recent.mMenuItems.ClearAndDeleteItems(); + } + } + public void SetDefaults() { mVSSettings.SetDefaults(); @@ -1192,6 +1204,9 @@ namespace IDE public bool WantsReload() { + if (mSettingFileDateTime == default) + return false; + String path = scope .(); GetSettingsPath(path);