diff options
Diffstat (limited to 'main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs')
-rw-r--r-- | main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs index 0a95a9c589..50cb4254fe 100644 --- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs +++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs @@ -31,16 +31,41 @@ using System.ComponentModel; using MonoDevelop.Projects; using MonoDevelop.Core; using MonoDevelop.Ide; +using System.Linq; namespace MonoDevelop.DesignerSupport { - class ProjectFileDescriptor: CustomDescriptor + class ProjectFileDescriptor: CustomDescriptor, IDisposable { ProjectFile file; - + Project project; + public ProjectFileDescriptor (ProjectFile file) { this.file = file; + project = file.Project; + if (project != null) { + project.FilePropertyChangedInProject += OnFilePropertyChangedInProject; + } + } + + void OnFilePropertyChangedInProject (object sender, ProjectFileEventArgs args) + { + var pad = IdeApp.Workbench.GetPad <PropertyPad> (); + if (pad == null) + return; + + var grid = ((PropertyPad)pad.Content).PropertyGrid; + if (args.Any (arg => arg.ProjectFile == file)) + grid.Refresh (); + } + + void IDisposable.Dispose () + { + if (project != null) { + project.FilePropertyChangedInProject -= OnFilePropertyChangedInProject; + project = null; + } } [LocalizedCategory ("Misc")] @@ -71,6 +96,7 @@ namespace MonoDevelop.DesignerSupport [LocalizedDisplayName ("Build action")] [LocalizedDescription ("Action to perform when building this file.")] [TypeConverter (typeof (BuildActionStringsConverter))] + [RefreshProperties(RefreshProperties.All)] public string BuildAction { get { return file.BuildAction; } set { file.BuildAction = value; } |