diff --git a/uppsrc/CtrlLib/Button.cpp b/uppsrc/CtrlLib/Button.cpp index 71495db3c..5f17662bd 100644 --- a/uppsrc/CtrlLib/Button.cpp +++ b/uppsrc/CtrlLib/Button.cpp @@ -692,7 +692,7 @@ void Option::PerformAction() { Option& Option::Set(int b) { if(b != option) { - option = b; + option = IsNull(b) ? Null : (bool)b; Update(); RefreshPush(); AutoSync(); diff --git a/uppsrc/ide/SelectPkg.cpp b/uppsrc/ide/SelectPkg.cpp index 0ebc0cb17..bbc69189e 100644 --- a/uppsrc/ide/SelectPkg.cpp +++ b/uppsrc/ide/SelectPkg.cpp @@ -477,6 +477,7 @@ void SelectPackageDlg::ToolBase(Bar& bar) .Key(K_CTRL_ENTER); bar.Add(base.IsCursor(), "Remove assembly..", THISBACK(OnBaseRemove)) .Key(K_CTRL_DELETE); + bar.Add("Purge assemblies..", [=] { RemoveInvalid(); }); Vector d = GetSvnDirs(); if(HasGit()) { bar.Separator(); @@ -534,6 +535,53 @@ void SelectPackageDlg::OnBaseRemove() } } +void SelectPackageDlg::RemoveInvalid() +{ + String vars = base.GetKey(); + WithRemoveInvalidAssembliesLayout dlg; + CtrlLayoutOKCancel(dlg, "Remove assemblies"); + dlg.list.AddColumn("Remove") + .Ctrls([=](int, One &c) { c.Create