1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-17 23:56:05 +02:00

Fixed some file/dir deleting issues

This commit is contained in:
Brian Fiete 2020-05-20 06:43:41 -07:00
parent 9a2d200b70
commit 387ba470d4
5 changed files with 46 additions and 11 deletions

View file

@ -614,9 +614,29 @@ namespace IDE
{
using (mMonitor.Enter())
{
bool added = mChangeMap.TryAdd(changeRecord.mPath, var keyPtr, var valuePtr);
if (added)
{
*keyPtr = changeRecord.mPath;
*valuePtr = changeRecord;
mChangeList.Add(changeRecord);
bool added = mChangeMap.TryAdd(changeRecord.mPath, changeRecord);
Debug.Assert(added);
}
else
{
delete changeRecord;
}
}
}
public void RemoveChangedFile(String str)
{
using (mMonitor.Enter())
{
if (mChangeMap.GetAndRemove(str) case .Ok(let kv))
{
mChangeList.Remove(kv.value);
delete kv.value;
}
}
}

View file

@ -249,7 +249,8 @@ namespace IDE
{
mParentFolder.mChildMap.Remove(mName);
mName.Set(newName);
mParentFolder.mChildMap.Add(mName, this);
bool added = mParentFolder.mChildMap.TryAdd(mName, this);
Debug.Assert(added);
}
if ((didNameMatch) && (changePath))

View file

@ -18,7 +18,7 @@ namespace IDE.ui
COUNT
}
List<String> mFileNames = new List<String>() ~ DeleteContainerAndItems!(_);
public List<String> mFileNames = new List<String>() ~ DeleteContainerAndItems!(_);
public bool?[(int)DialogKind.COUNT] mApplyAllResult;
public DialogKind mDialogKind;

View file

@ -1173,7 +1173,7 @@ namespace IDE.ui
if ((sourceViewPanel != null) && (sourceViewPanel.mProjectSource == projectSource))
{
if (isRemovingProjectSource)
sourceViewPanel.DetachFromProjectItem();
sourceViewPanel.DetachFromProjectItem(true);
else
sourceViewPanel.QueueFullRefresh(true);
}
@ -1217,7 +1217,7 @@ namespace IDE.ui
(sourceViewPanel.mProjectSource != null) &&
(sourceViewPanel.mProjectSource.mProject == project))
{
sourceViewPanel.DetachFromProjectItem();
sourceViewPanel.DetachFromProjectItem(true);
}
});
@ -1228,7 +1228,7 @@ namespace IDE.ui
if (listItem.mChildItems != null)
{
for (int childIdx = listItem.mChildItems.Count - 1; childIdx >= 0; childIdx--)
DoDeleteItem(listItem.mChildItems[childIdx], deletePathFunc);
DoDeleteItem(listItem.mChildItems[childIdx], deletePathFunc, true);
}
if (projectItem == null)

View file

@ -842,6 +842,7 @@ namespace IDE.ui
{
mEditData.mLastFileTextVersion = mEditWidget.Content.mData.mCurTextVersionId;
mEditData.mHadRefusedFileChange = false;
mEditData.mFileDeleted = false;
var editText = scope String();
mEditWidget.GetText(editText);
@ -2120,16 +2121,29 @@ namespace IDE.ui
mEditData.Ref();
mProjectSource.mEditData = mEditData;
mEditData.mProjectSources.Add(mProjectSource);
// Rehup mFileDeleted if necessary
if (mEditData.mFileDeleted)
mEditData.IsFileDeleted();
}
}
QueueFullRefresh(true);
}
public void DetachFromProjectItem()
public void DetachFromProjectItem(bool fileDeleted)
{
if (mProjectSource == null)
return;
if (fileDeleted)
{
// We manually add this change record because it may not get caught since the watch dep may be gone
// This will allow the "File Deleted" dialog to show.
var changeRecord = new FileWatcher.ChangeRecord();
changeRecord.mChangeType = .Deleted;
changeRecord.mPath = new String(mFilePath);
gApp.mFileWatcher.AddChangedFile(changeRecord);
}
ProcessDeferredResolveResults(-1);
//Debug.Assert(mEditData != null);
@ -2140,9 +2154,9 @@ namespace IDE.ui
QueueFullRefresh(true);
if (mOldVersionPanel != null)
mOldVersionPanel.DetachFromProjectItem();
mOldVersionPanel.DetachFromProjectItem(false);
if (mSplitTopPanel != null)
mSplitTopPanel.DetachFromProjectItem();
mSplitTopPanel.DetachFromProjectItem(false);
}
public void CloseEdit()