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:
parent
578e513196
commit
c04778ec5a
3 changed files with 44 additions and 34 deletions
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue