mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-17 23:56:05 +02:00
Propertly remove nested workspace folders.
This commit is contained in:
parent
1eb2b97db7
commit
ea39dc6f2b
1 changed files with 14 additions and 10 deletions
|
@ -1777,29 +1777,35 @@ namespace IDE.ui
|
||||||
let root = mListView.GetRoot();
|
let root = mListView.GetRoot();
|
||||||
List<ListViewItem> itemsToMove = scope .();
|
List<ListViewItem> itemsToMove = scope .();
|
||||||
List<WorkspaceFolder> foldersToDelete = scope .();
|
List<WorkspaceFolder> foldersToDelete = scope .();
|
||||||
|
|
||||||
root.WithSelectedItems(scope [&] (selectedItem) => {
|
root.WithSelectedItems(scope [&] (selectedItem) => {
|
||||||
if (mListViewToWorkspaceFolderMap.GetValue(selectedItem) case .Ok(let folder))
|
if (mListViewToWorkspaceFolderMap.GetValue(selectedItem) case .Ok(let folder))
|
||||||
{
|
{
|
||||||
foldersToDelete.Add(folder);
|
foldersToDelete.Add(folder);
|
||||||
|
mListViewToWorkspaceFolderMap.Remove(folder.mListView);
|
||||||
selectedItem.WithItems(scope [&] (item) => {
|
selectedItem.WithItems(scope [&] (item) => {
|
||||||
if (mListViewToProjectMap.GetValue(item) case .Ok(let project))
|
if (mListViewToProjectMap.GetValue(item) case .Ok(let project))
|
||||||
{
|
{
|
||||||
if (project.mParentFolder == null)
|
if (project.mParentFolder == null)
|
||||||
itemsToMove.Add(item);
|
itemsToMove.Add(item);
|
||||||
}
|
}
|
||||||
|
else if (mListViewToWorkspaceFolderMap.GetValue(item) case .Ok(let itemFolder))
|
||||||
|
{
|
||||||
|
foldersToDelete.Add(itemFolder);
|
||||||
|
mListViewToWorkspaceFolderMap.Remove(itemFolder.mListView);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
for (let projectListViewItem in itemsToMove)
|
for (let listViewItem in itemsToMove)
|
||||||
{
|
{
|
||||||
projectListViewItem.mParentItem.RemoveChildItem(projectListViewItem, false);
|
listViewItem.mParentItem.RemoveChildItem(listViewItem, false);
|
||||||
root.AddChildAtIndex(1, projectListViewItem);
|
root.AddChildAtIndex(1, listViewItem);
|
||||||
if (mListViewToProjectMap.TryGetValue(projectListViewItem, let projectItem))
|
if (mListViewToProjectMap.TryGetValue(listViewItem, let projectItem))
|
||||||
mProjectToWorkspaceFolderMap.Remove(projectItem);
|
mProjectToWorkspaceFolderMap.Remove(projectItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
HashSet<void*> deletedFolders = scope .();
|
|
||||||
bool HasDeletedParent(WorkspaceFolder folder)
|
bool HasDeletedParent(WorkspaceFolder folder)
|
||||||
{
|
{
|
||||||
WorkspaceFolder parent = folder;
|
WorkspaceFolder parent = folder;
|
||||||
|
@ -1807,7 +1813,7 @@ namespace IDE.ui
|
||||||
{
|
{
|
||||||
parent = parent.mParent;
|
parent = parent.mParent;
|
||||||
|
|
||||||
if (deletedFolders.Contains(Internal.UnsafeCastToPtr(parent)))
|
if (foldersToDelete.Contains(parent))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
while (parent != null);
|
while (parent != null);
|
||||||
|
@ -1815,17 +1821,15 @@ namespace IDE.ui
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let folder in foldersToDelete)
|
for (let folder in foldersToDelete)
|
||||||
{
|
{
|
||||||
if (!HasDeletedParent(folder))
|
if (!HasDeletedParent(folder))
|
||||||
{
|
{
|
||||||
let folderItem = folder.mListView;
|
let folderItem = folder.mListView;
|
||||||
mListViewToWorkspaceFolderMap.Remove(folderItem);
|
|
||||||
folderItem.mParentItem.RemoveChildItem(folderItem);
|
folderItem.mParentItem.RemoveChildItem(folderItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
gApp.mWorkspace.mWorkspaceFolders.Remove(folder);
|
gApp.mWorkspace.mWorkspaceFolders.Remove(folder);
|
||||||
deletedFolders.Add(Internal.UnsafeCastToPtr(folder));
|
|
||||||
delete folder;
|
delete folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue