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:
authorVsevolod Kukol <sevoku@microsoft.com>2016-09-16 10:03:30 +0300
committerVsevolod Kukol <sevoku@microsoft.com>2016-09-16 13:41:43 +0300
commit5258bff5c4bb9fe148c2b49b5c1afc79f5c2e7b6 (patch)
tree40b89453566cc44a908dc1252e57898f33fa0117 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad
parent0000da699e09d9cec8f4276c721a346402722066 (diff)
parentf6483f8a1c6d0790f2d8033a7e4d55e09b57a8bd (diff)
Merge remote-tracking branch 'origin/master' into connected-services
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs36
1 files changed, 28 insertions, 8 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs
index dee86e78bb..1a84fa148e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs
@@ -153,13 +153,20 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
get; set;
}
+ static FolderCommandHandler ()
+ {
+ IdeApp.Workspace.LastWorkspaceItemClosed += (sender, e) => PreviousFolderPath = null;
+ }
+
public abstract string GetFolderPath (object dataObject);
public override bool CanDropNode (object dataObject, DragOperation operation)
{
string targetDirectory = GetFolderPath (CurrentNode.DataItem);
-
- if (dataObject is ProjectFile) {
+
+ if (dataObject is SolutionFolderFileNode) {
+ return true;
+ } else if (dataObject is ProjectFile) {
ProjectFile file = (ProjectFile) dataObject;
var srcDir = (file.Project != null && file.IsLink)
? file.Project.BaseDirectory.Combine (file.ProjectVirtualPath)
@@ -197,12 +204,12 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
}
foreach (object dataObject in dataObjects)
- DropNode (projectsToSave, dataObject, groupedFiles, operation);
+ await DropNode (projectsToSave, dataObject, groupedFiles, operation);
await IdeApp.ProjectOperations.SaveAsync (projectsToSave);
}
- void DropNode (HashSet<SolutionItem> projectsToSave, object dataObject, HashSet<ProjectFile> groupedFiles, DragOperation operation)
+ async System.Threading.Tasks.Task DropNode (HashSet<SolutionItem> projectsToSave, object dataObject, HashSet<ProjectFile> groupedFiles, DragOperation operation)
{
FilePath targetDirectory = GetFolderPath (CurrentNode.DataItem);
FilePath source;
@@ -263,7 +270,15 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
projectsToSave.Add (targetProject);
return;
}
- else
+ else if (dataObject is SolutionFolderFileNode) {
+ var sff = (SolutionFolderFileNode)dataObject;
+ sff.Parent.Files.Remove (sff.FileName);
+
+ await IdeApp.ProjectOperations.SaveAsync (sff.Parent.ParentSolution);
+ source = ((SolutionFolderFileNode)dataObject).FileName;
+ sourceProject = null;
+ what = null;
+ } else
return;
var targetPath = targetDirectory.Combine (source.FileName);
@@ -299,7 +314,12 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
return;
}
} else if (dataObject is ProjectFile) {
- foreach (var file in new FilePath[] { targetPath }.Concat (targetChildPaths)) {
+ var items = Enumerable.Repeat (targetPath, 1);
+ if (targetChildPaths != null) {
+ items = items.Concat (targetChildPaths);
+ }
+
+ foreach (var file in items) {
if (File.Exists (file))
if (!MessageService.Confirm (GettextCatalog.GetString ("The file '{0}' already exists. Do you want to overwrite it?", file.FileName), AlertButton.OverwriteFile))
return;
@@ -370,7 +390,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
// control related files such as .svn directories
// Note: if we are transferring a ProjectFile, this will copy/move the ProjectFile's DependentChildren as well.
- IdeApp.ProjectOperations.TransferFiles (monitor, sourceProject, source, targetProject, targetPath, move, true);
+ IdeApp.ProjectOperations.TransferFiles (monitor, sourceProject, source, targetProject, targetPath, move, sourceProject != null);
}
}
@@ -381,7 +401,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
var targetRoot = ((FilePath) GetFolderPath (CurrentNode.DataItem)).CanonicalPath;
AddFileDialog fdiag = new AddFileDialog (GettextCatalog.GetString ("Add files"));
- fdiag.CurrentFolder = !PreviousFolderPath.IsNullOrEmpty ? PreviousFolderPath : targetRoot;
+ fdiag.CurrentFolder = !PreviousFolderPath.IsNullOrEmpty && !PreviousFolderPath.IsChildPathOf (project.ParentSolution.BaseDirectory) ? PreviousFolderPath : targetRoot;
fdiag.SelectMultiple = true;
fdiag.TransientFor = IdeApp.Workbench.RootWindow;
fdiag.BuildActions = project.GetBuildActions ();