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:
authorMichael Hutchinson <m.j.hutchinson@gmail.com>2014-06-27 02:43:34 +0400
committerMichael Hutchinson <m.j.hutchinson@gmail.com>2014-06-27 02:43:34 +0400
commitffe059c35e880dee32d2b878ec22f28cc92b22d9 (patch)
tree61c0b8a3e311f24cccb1bb2fe0d06fbc49ac92bb /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools
parentcdc5050b62645d9ceb5ef89329e58cd4169e38cd (diff)
[Ide] Custom tool service should broadcast file changes
BXC8026 - T4 template regenerated only on every other content change Also avoid unnecessarily re-saving the project.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs39
1 files changed, 28 insertions, 11 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs
index 873e6c7002..4897ecb754 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs
@@ -206,20 +206,37 @@ namespace MonoDevelop.Ide.CustomTools
} finally {
monitor.Dispose ();
}
-
- if (!result.GeneratedFilePath.IsNullOrEmpty && File.Exists (result.GeneratedFilePath)) {
- Gtk.Application.Invoke (delegate {
- if (genFile == null) {
- genFile = file.Project.AddFile (result.GeneratedFilePath, result.OverrideBuildAction);
- } else if (result.GeneratedFilePath != genFile.FilePath) {
- genFile.Name = result.GeneratedFilePath;
- }
+
+ if (result.GeneratedFilePath.IsNullOrEmpty || !File.Exists (result.GeneratedFilePath))
+ return;
+
+ // broadcast a change event so text editors etc reload the file
+ FileService.NotifyFileChanged (result.GeneratedFilePath);
+
+ // add file to project, update file properties, etc
+ Gtk.Application.Invoke (delegate {
+ bool projectChanged = false;
+ if (genFile == null) {
+ genFile = file.Project.AddFile (result.GeneratedFilePath, result.OverrideBuildAction);
+ projectChanged = true;
+ } else if (result.GeneratedFilePath != genFile.FilePath) {
+ genFile.Name = result.GeneratedFilePath;
+ projectChanged = true;
+ }
+
+ if (file.LastGenOutput != genFileName) {
file.LastGenOutput = genFileName;
+ projectChanged = true;
+ }
+
+ if (genFile.DependsOn != file.FilePath.FileName) {
genFile.DependsOn = file.FilePath.FileName;
-
+ projectChanged = true;
+ }
+
+ if (projectChanged)
IdeApp.ProjectOperations.Save (file.Project);
- });
- }
+ });
}
static void HandleRename (ProjectFileRenamedEventArgs e)