Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Karlaš <david.karlas@xamarin.com>2016-09-02 20:09:12 +0300
committerDavid Karlaš <david.karlas@xamarin.com>2016-09-02 20:09:12 +0300
commita5c429fa96f92ae97a652c07805ff27bb37fc1cc (patch)
treea63f444965962c0f6635a88703963004cbf1f8d4
parent12cb4238bbee415dab9978466fcd79b8c00d94e0 (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.cs22
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;