From 649a76ee22e52751d1a1af0565ffa9dc0fb0e123 Mon Sep 17 00:00:00 2001 From: Shen Chen Date: Mon, 26 Aug 2024 15:14:40 -0700 Subject: [PATCH] Double check document changes when dismiss rename --- .../Core/InlineRename/InlineRenameSession.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/EditorFeatures/Core/InlineRename/InlineRenameSession.cs b/src/EditorFeatures/Core/InlineRename/InlineRenameSession.cs index 458d62ac88cf2..c4a1fd8e6df12 100644 --- a/src/EditorFeatures/Core/InlineRename/InlineRenameSession.cs +++ b/src/EditorFeatures/Core/InlineRename/InlineRenameSession.cs @@ -386,12 +386,19 @@ private void OnWorkspaceChanged(object sender, WorkspaceChangeEventArgs args) { if (args.Kind != WorkspaceChangeKind.DocumentChanged) { - Logger.Log(FunctionId.Rename_InlineSession_Cancel_NonDocumentChangedWorkspaceChange, KeyValueLogMessage.Create(m => + // Make sure only call Cancel() when there is real document changes. + // Sometimes, WorkspaceChangeKind.SolutionChanged might be triggered because of SourceGeneratorVersion get updated. + // We don't want to cancel rename when there is no changed documents. + var changedDocuments = args.NewSolution.GetChangedDocuments(args.OldSolution); + if (changedDocuments.Any()) { - m["Kind"] = Enum.GetName(typeof(WorkspaceChangeKind), args.Kind); - })); + Logger.Log(FunctionId.Rename_InlineSession_Cancel_NonDocumentChangedWorkspaceChange, KeyValueLogMessage.Create(m => + { + m["Kind"] = Enum.GetName(typeof(WorkspaceChangeKind), args.Kind); + })); - Cancel(); + Cancel(); + } } }