diff --git a/IDE/src/FileEditData.bf b/IDE/src/FileEditData.bf index 2dde1e1c..4325ae76 100644 --- a/IDE/src/FileEditData.bf +++ b/IDE/src/FileEditData.bf @@ -73,7 +73,12 @@ namespace IDE return false; return mLastFileTextVersion != mEditWidget.Content.mData.mCurTextVersionId; } - + + public bool HasEditPanel() + { + return mEditWidget.mPanel != null; + } + public bool Reload() { mHadRefusedFileChange = false; diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index 566bf293..32104c4d 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -12762,6 +12762,9 @@ namespace IDE mLastFileChangeId = mFileWatcher.mChangeId; } + if (mSymbolReferenceHelper?.mKind == .Rename) + return; + var app = gApp; Debug.Assert(app != null); @@ -13138,6 +13141,9 @@ namespace IDE void VerifyModifiedBuffers() { + if (mSymbolReferenceHelper?.mKind == .Rename) + return; + mWorkspace.WithProjectItems(scope (projectItem) => { var projectSource = projectItem as ProjectSource; diff --git a/IDE/src/ui/RenameSymbolDialog.bf b/IDE/src/ui/RenameSymbolDialog.bf index de7e7d0c..c2fc6ed9 100644 --- a/IDE/src/ui/RenameSymbolDialog.bf +++ b/IDE/src/ui/RenameSymbolDialog.bf @@ -720,6 +720,8 @@ namespace IDE.ui void Dispose() { + bool hadChange = (mKind == Kind.Rename) && (mNewReplaceStr != mOrigReplaceStr); + mSourceViewPanel.CancelResolve(.GetSymbolInfo); if (mPassInstance != null) { @@ -756,15 +758,24 @@ namespace IDE.ui editWidgetContent.mData.mText[i].mDisplayFlags &= 0xFF ^ (uint8)(SourceElementFlags.SymbolReference); } - using (gApp.mMonitor.Enter()) - editData.SetSavedData(null, IdSpan()); - var app = IDEApp.sApp; - if ((mKind == Kind.Rename) && (IDEApp.IsBeefFile(editData.mFilePath))) + if (hadChange) { - for (var projectSource in editData.mProjectSources) - app.mBfResolveCompiler.QueueProjectSource(projectSource, .None, false); - app.mBfResolveCompiler.QueueDeferredResolveAll(); + using (gApp.mMonitor.Enter()) + editData.SetSavedData(null, IdSpan()); + + if (!editData.HasEditPanel()) + { + gApp.SaveFile(editData); + } + + if (IDEApp.IsBeefFile(editData.mFilePath)) + { + for (var projectSource in editData.mProjectSources) + gApp.mBfResolveCompiler.QueueProjectSource(projectSource, .None, false); + gApp.mBfResolveCompiler.QueueDeferredResolveAll(); + } } + } } } diff --git a/IDE/src/util/GlobalUndoManager.bf b/IDE/src/util/GlobalUndoManager.bf index 6f1a830f..00f5c738 100644 --- a/IDE/src/util/GlobalUndoManager.bf +++ b/IDE/src/util/GlobalUndoManager.bf @@ -60,7 +60,7 @@ namespace IDE.Util mUndoData.mUndoCount++; if (mUndoData.mPerforming) - return true; + return true; mUndoData.mPerforming = true; for (var editData in mUndoData.mFileEditDatas) @@ -78,6 +78,11 @@ namespace IDE.Util break; } + if (!editData.HasEditPanel()) + { + gApp.SaveFile(editData); + } + if (IDEApp.IsBeefFile(editData.mFilePath)) { for (var projectSource in editData.mProjectSources) @@ -122,6 +127,11 @@ namespace IDE.Util break; } + if (!editData.HasEditPanel()) + { + gApp.SaveFile(editData); + } + if (IDEApp.IsBeefFile(editData.mFilePath)) { for (var projectSource in editData.mProjectSources)