mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-18 08:06:04 +02:00
Fixed some file/dir deleting issues
This commit is contained in:
parent
9a2d200b70
commit
387ba470d4
5 changed files with 46 additions and 11 deletions
|
@ -614,9 +614,29 @@ namespace IDE
|
||||||
{
|
{
|
||||||
using (mMonitor.Enter())
|
using (mMonitor.Enter())
|
||||||
{
|
{
|
||||||
|
bool added = mChangeMap.TryAdd(changeRecord.mPath, var keyPtr, var valuePtr);
|
||||||
|
if (added)
|
||||||
|
{
|
||||||
|
*keyPtr = changeRecord.mPath;
|
||||||
|
*valuePtr = changeRecord;
|
||||||
mChangeList.Add(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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue