diff options
author | David Karlaš <david.karlas@xamarin.com> | 2016-09-02 20:09:12 +0300 |
---|---|---|
committer | David Karlaš <david.karlas@xamarin.com> | 2016-09-02 20:09:12 +0300 |
commit | a5c429fa96f92ae97a652c07805ff27bb37fc1cc (patch) | |
tree | a63f444965962c0f6635a88703963004cbf1f8d4 | |
parent | 12cb4238bbee415dab9978466fcd79b8c00d94e0 (diff) |
Bug 43797 - Moving class to its own file from Shared Asset Project adds the file to the wrong project
Basically cherry picked b4ac3b5e to C8 minus .csproj change
-rw-r--r-- | main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/MoveTypeToFile/MoveTypeToFile.cs | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/MoveTypeToFile/MoveTypeToFile.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/MoveTypeToFile/MoveTypeToFile.cs index 29779dcb78..abefb0393d 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/MoveTypeToFile/MoveTypeToFile.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/MoveTypeToFile/MoveTypeToFile.cs @@ -44,6 +44,8 @@ using System.Collections.Generic; using MonoDevelop.Ide.StandardHeader; using ICSharpCode.NRefactory6.CSharp; using Microsoft.CodeAnalysis.Text; +using MonoDevelop.Projects; +using MonoDevelop.Projects.SharedAssetsProjects; namespace MonoDevelop.CSharp.CodeFixes.MoveTypeToFile { @@ -133,7 +135,8 @@ namespace MonoDevelop.CSharp.CodeFixes.MoveTypeToFile FileService.RenameFile (document.FilePath, correctFileName); var doc = IdeApp.Workbench.ActiveDocument; if (doc.HasProject) { - IdeApp.ProjectOperations.SaveAsync (doc.Project); + var prj = DetermineRealProject (doc); + IdeApp.ProjectOperations.SaveAsync (prj); } return document; } @@ -167,8 +170,10 @@ namespace MonoDevelop.CSharp.CodeFixes.MoveTypeToFile File.WriteAllText (correctFileName, content); if (doc.HasProject) { - doc.Project.AddFile (correctFileName); - IdeApp.ProjectOperations.SaveAsync (doc.Project); + var prj = DetermineRealProject (doc); + + prj.AddFile (correctFileName); + IdeApp.ProjectOperations.SaveAsync (prj); } doc.Editor.RemoveText (CalcTypeBounds (type)); @@ -176,6 +181,17 @@ namespace MonoDevelop.CSharp.CodeFixes.MoveTypeToFile return document; } + static Projects.Project DetermineRealProject (Ide.Gui.Document doc) + { + // try to search for a shared project + var allProjects = IdeApp.Workspace.GetAllItems<SharedAssetsProject> (); + var projects = new List<SharedAssetsProject> (allProjects.Where (p => p.IsFileInProject (doc.FileName))); + if (projects.Count > 0) + return projects [0]; + + return doc.Project; + } + ISegment CalcTypeBounds (BaseTypeDeclarationSyntax type) { int start = type.Span.Start; |