Quellcode durchsuchen

Fixed save buffers during symbol rename

Brian Fiete vor 4 Jahren
Ursprung
Commit
330eb037e8
4 geänderte Dateien mit 41 neuen und 9 gelöschten Zeilen
  1. 6 1
      IDE/src/FileEditData.bf
  2. 6 0
      IDE/src/IDEApp.bf
  3. 18 7
      IDE/src/ui/RenameSymbolDialog.bf
  4. 11 1
      IDE/src/util/GlobalUndoManager.bf

+ 6 - 1
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;

+ 6 - 0
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;

+ 18 - 7
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();
+							}
 						}
+
 	                }
 				}
             }

+ 11 - 1
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)