diff --git a/BeefLibs/Beefy2D/src/theme/dark/DarkTabbedView.bf b/BeefLibs/Beefy2D/src/theme/dark/DarkTabbedView.bf index 7e43279b..f5d562a5 100644 --- a/BeefLibs/Beefy2D/src/theme/dark/DarkTabbedView.bf +++ b/BeefLibs/Beefy2D/src/theme/dark/DarkTabbedView.bf @@ -257,53 +257,22 @@ namespace Beefy.theme.dark mTabbedView.mAutoClose = !mTabbedView.mAutoClose; }); - void CloseTabs(bool autoClose, bool closeCurrent) - { - let prevAutoClose = mTabbedView.mAutoClose; - mTabbedView.mAutoClose = autoClose; - var tabs = scope List(); - for (var tab in mTabbedView.mTabs) - tabs.Add(tab); - - if (tabs.IsEmpty) - { - if (autoClose) - { - if (var dockingFrame = mTabbedView.mParent as DockingFrame) - { - dockingFrame.RemoveDockedWidget(mTabbedView); - BFApp.sApp.DeferDelete(mTabbedView); - } - } - } - else - { - for (var tab in tabs) - { - if ((!closeCurrent) && (tab.mIsActive)) - continue; - tab.mCloseClickedEvent(); - } - } - mTabbedView.mAutoClose = prevAutoClose; - } - menuItem = menu.AddItem("Close"); menuItem.mOnMenuItemSelected.Add(new (evt) => { - CloseTabs(true, true); + mTabbedView.CloseTabs(true, true); }); menuItem = menu.AddItem("Close Tabs"); menuItem.mOnMenuItemSelected.Add(new (evt) => { - CloseTabs(false, true); + mTabbedView.CloseTabs(false, true); }); menuItem = menu.AddItem("Close Tabs Except Current"); menuItem.mOnMenuItemSelected.Add(new (evt) => { - CloseTabs(false, false); + mTabbedView.CloseTabs(false, false); }); menu.AddItem(); diff --git a/BeefLibs/Beefy2D/src/widgets/TabbedView.bf b/BeefLibs/Beefy2D/src/widgets/TabbedView.bf index 6390159b..540a34ab 100644 --- a/BeefLibs/Beefy2D/src/widgets/TabbedView.bf +++ b/BeefLibs/Beefy2D/src/widgets/TabbedView.bf @@ -390,6 +390,37 @@ namespace Beefy.widgets return ThemeFactory.mDefault.CreateTabbedView(sharedData); } + public void CloseTabs(bool autoClose, bool closeCurrent) + { + let prevAutoClose = mAutoClose; + mAutoClose = autoClose; + var tabs = scope List(); + for (var tab in mTabs) + tabs.Add(tab); + + if (tabs.IsEmpty) + { + if (autoClose) + { + if (var dockingFrame = mParent as DockingFrame) + { + dockingFrame.RemoveDockedWidget(this); + BFApp.sApp.DeferDelete(this); + } + } + } + else + { + for (var tab in tabs) + { + if ((!closeCurrent) && (tab.mIsActive)) + continue; + tab.mCloseClickedEvent(); + } + } + mAutoClose = prevAutoClose; + } + public void Closed() { mSharedData.mTabbedViewClosed(this); diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index 831cff7a..0d91038d 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -5728,6 +5728,16 @@ namespace IDE let process = scope SpawnedProcess(); process.Start(procInfo).IgnoreError(); }); + item = menu.AddItem("Close"); + item.mOnMenuItemSelected.Add(new (menu) => + { + mCloseClickedEvent(); + }); + item = menu.AddItem("Close All Except This"); + item.mOnMenuItemSelected.Add(new (menu) => + { + mTabbedView.CloseTabs(false, false); + }); } if (menu.mItems.Count > 0)