1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-14 14:24:10 +02:00

Right-click close options for tabs

This commit is contained in:
Brian Fiete 2020-09-11 23:26:59 -07:00
parent 578e513196
commit c04778ec5a
3 changed files with 44 additions and 34 deletions

View file

@ -257,53 +257,22 @@ namespace Beefy.theme.dark
mTabbedView.mAutoClose = !mTabbedView.mAutoClose; mTabbedView.mAutoClose = !mTabbedView.mAutoClose;
}); });
void CloseTabs(bool autoClose, bool closeCurrent)
{
let prevAutoClose = mTabbedView.mAutoClose;
mTabbedView.mAutoClose = autoClose;
var tabs = scope List<TabButton>();
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 = menu.AddItem("Close");
menuItem.mOnMenuItemSelected.Add(new (evt) => menuItem.mOnMenuItemSelected.Add(new (evt) =>
{ {
CloseTabs(true, true); mTabbedView.CloseTabs(true, true);
}); });
menuItem = menu.AddItem("Close Tabs"); menuItem = menu.AddItem("Close Tabs");
menuItem.mOnMenuItemSelected.Add(new (evt) => menuItem.mOnMenuItemSelected.Add(new (evt) =>
{ {
CloseTabs(false, true); mTabbedView.CloseTabs(false, true);
}); });
menuItem = menu.AddItem("Close Tabs Except Current"); menuItem = menu.AddItem("Close Tabs Except Current");
menuItem.mOnMenuItemSelected.Add(new (evt) => menuItem.mOnMenuItemSelected.Add(new (evt) =>
{ {
CloseTabs(false, false); mTabbedView.CloseTabs(false, false);
}); });
menu.AddItem(); menu.AddItem();

View file

@ -390,6 +390,37 @@ namespace Beefy.widgets
return ThemeFactory.mDefault.CreateTabbedView(sharedData); return ThemeFactory.mDefault.CreateTabbedView(sharedData);
} }
public void CloseTabs(bool autoClose, bool closeCurrent)
{
let prevAutoClose = mAutoClose;
mAutoClose = autoClose;
var tabs = scope List<TabButton>();
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() public void Closed()
{ {
mSharedData.mTabbedViewClosed(this); mSharedData.mTabbedViewClosed(this);

View file

@ -5728,6 +5728,16 @@ namespace IDE
let process = scope SpawnedProcess(); let process = scope SpawnedProcess();
process.Start(procInfo).IgnoreError(); 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) if (menu.mItems.Count > 0)