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()) using (mMonitor.Enter())
{ {
mChangeList.Add(changeRecord); bool added = mChangeMap.TryAdd(changeRecord.mPath, var keyPtr, var valuePtr);
bool added = mChangeMap.TryAdd(changeRecord.mPath, changeRecord); if (added)
Debug.Assert(added); {
*keyPtr = changeRecord.mPath;
*valuePtr = changeRecord;
mChangeList.Add(changeRecord);
}
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); mParentFolder.mChildMap.Remove(mName);
mName.Set(newName); mName.Set(newName);
mParentFolder.mChildMap.Add(mName, this); bool added = mParentFolder.mChildMap.TryAdd(mName, this);
Debug.Assert(added);
} }
if ((didNameMatch) && (changePath)) if ((didNameMatch) && (changePath))

View file

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

View file

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

View file

@ -842,6 +842,7 @@ namespace IDE.ui
{ {
mEditData.mLastFileTextVersion = mEditWidget.Content.mData.mCurTextVersionId; mEditData.mLastFileTextVersion = mEditWidget.Content.mData.mCurTextVersionId;
mEditData.mHadRefusedFileChange = false; mEditData.mHadRefusedFileChange = false;
mEditData.mFileDeleted = false;
var editText = scope String(); var editText = scope String();
mEditWidget.GetText(editText); mEditWidget.GetText(editText);
@ -2120,16 +2121,29 @@ namespace IDE.ui
mEditData.Ref(); mEditData.Ref();
mProjectSource.mEditData = mEditData; mProjectSource.mEditData = mEditData;
mEditData.mProjectSources.Add(mProjectSource); mEditData.mProjectSources.Add(mProjectSource);
// Rehup mFileDeleted if necessary
if (mEditData.mFileDeleted)
mEditData.IsFileDeleted();
} }
} }
QueueFullRefresh(true); QueueFullRefresh(true);
} }
public void DetachFromProjectItem() public void DetachFromProjectItem(bool fileDeleted)
{ {
if (mProjectSource == null) if (mProjectSource == null)
return; 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); ProcessDeferredResolveResults(-1);
//Debug.Assert(mEditData != null); //Debug.Assert(mEditData != null);
@ -2140,9 +2154,9 @@ namespace IDE.ui
QueueFullRefresh(true); QueueFullRefresh(true);
if (mOldVersionPanel != null) if (mOldVersionPanel != null)
mOldVersionPanel.DetachFromProjectItem(); mOldVersionPanel.DetachFromProjectItem(false);
if (mSplitTopPanel != null) if (mSplitTopPanel != null)
mSplitTopPanel.DetachFromProjectItem(); mSplitTopPanel.DetachFromProjectItem(false);
} }
public void CloseEdit() public void CloseEdit()