diff --git a/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs b/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs index 74c66bd81b..988fdf4363 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs @@ -325,6 +325,11 @@ namespace ICSharpCode.FormsDesigner { vc.ShowSourceCode(component, edesc, methodName); } + + public void MakeDirty() + { + vc.MakeDirty(); + } } #endregion @@ -359,7 +364,6 @@ namespace ICSharpCode.FormsDesigner undoEngine = (IFormsDesignerUndoEngine)appDomainHost.GetService(typeof(IFormsDesignerUndoEngine)); - appDomainHost.ComponentChanged += new ComponentChangedEventHandlerProxy(ComponentChanged); appDomainHost.ComponentAdded += new ComponentEventHandlerProxy(ComponentListChanged); appDomainHost.ComponentRemoved += new ComponentEventHandlerProxy(ComponentListChanged); appDomainHost.ComponentRename += new ComponentRenameEventHandlerProxy(ComponentListChanged); @@ -427,6 +431,11 @@ namespace ICSharpCode.FormsDesigner System.Windows.Input.CommandManager.InvalidateRequerySuggested(); } + void IFormsDesigner.MakeDirty() + { + MakeDirty(); + } + bool shouldUpdateSelectableObjects = false; void TransactionClose(object sender, DesignerTransactionCloseEventArgs e) @@ -439,24 +448,6 @@ namespace ICSharpCode.FormsDesigner } } - void ComponentChanged(object sender, ComponentChangedEventArgsProxy e) - { - bool loading = appDomainHost.IsLoaderLoading; - LoggingService.Debug("Forms designer: ComponentChanged: " + (e.Component == null ? "" : e.Component.ToString()) + ", Member=" + (e.Member == null ? "" : e.Member.Name) + ", OldValue=" + (e.OldValue == null ? "" : e.OldValue.ToString()) + ", NewValue=" + (e.NewValue == null ? "" : e.NewValue.ToString()) + "; Loading=" + loading + "; Unloading=" + this.unloading); - if (!loading && !unloading) { - try { - this.MakeDirty(); - if (e.Component != null && e.Member != null && e.Member.Name == "Name" && - e.NewValue is string && !object.Equals(e.OldValue, e.NewValue)) { - // changing the name of the component - generator.NotifyComponentRenamed(e.Component, (string)e.NewValue, (string)e.OldValue); - } - } catch (Exception ex) { - MessageService.ShowException(ex); - } - } - } - void ComponentListChanged(object sender, EventArgs e) { bool loading = appDomainHost.IsLoaderLoading; @@ -484,7 +475,6 @@ namespace ICSharpCode.FormsDesigner appDomainHost.DesignSurfaceFlushed -= new EventHandlerProxy(DesignerFlushed); appDomainHost.DesignSurfaceUnloading -= new EventHandlerProxy(DesignerUnloading); - appDomainHost.ComponentChanged -= new ComponentChangedEventHandlerProxy(ComponentChanged); appDomainHost.ComponentAdded -= new ComponentEventHandlerProxy(ComponentListChanged); appDomainHost.ComponentRemoved -= new ComponentEventHandlerProxy(ComponentListChanged); appDomainHost.ComponentRename -= new ComponentRenameEventHandlerProxy(ComponentListChanged); diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs index 392d22cace..e78a3bafa5 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs @@ -29,6 +29,9 @@ namespace ICSharpCode.FormsDesigner ServiceContainer container; DesignerLoader loader; IFormsDesignerLoggingService logger; + IDesignerGenerator generator; + bool unloading; + FormsDesignerAppDomainCreationProperties properties; public string DesignSurfaceName { get { @@ -82,6 +85,7 @@ namespace ICSharpCode.FormsDesigner void Initialize(FormsDesignerAppDomainCreationProperties properties) { + this.properties = properties; this.container = new DefaultServiceContainer(); container.AddService(typeof(FormsDesignerAppDomainHost), this); container.AddService(typeof(IFormsDesignerLoggingService), logger = new FormsDesignerLoggingServiceProxy(properties.Logger)); @@ -150,15 +154,6 @@ namespace ICSharpCode.FormsDesigner } } - public event EventHandler ComponentChanged; - - protected virtual void OnComponentChanged(ComponentChangedEventArgsProxy e) - { - if (ComponentChanged != null) { - ComponentChanged(this, e); - } - } - public event EventHandler ComponentAdded; protected virtual void OnComponentAdded(ComponentEventArgsProxy e) @@ -204,6 +199,24 @@ namespace ICSharpCode.FormsDesigner } } + void ComponentChanged(object sender, ComponentChangedEventArgs e) + { + bool loading = IsLoaderLoading; + LoggingService.Debug("Forms designer: ComponentChanged: " + (e.Component == null ? "" : e.Component.ToString()) + ", Member=" + (e.Member == null ? "" : e.Member.Name) + ", OldValue=" + (e.OldValue == null ? "" : e.OldValue.ToString()) + ", NewValue=" + (e.NewValue == null ? "" : e.NewValue.ToString()) + "; Loading=" + loading + "; Unloading=" + this.unloading); + if (!loading && !unloading) { + try { + properties.FormsDesignerProxy.MakeDirty(); + if (e.Component != null && e.Member != null && e.Member.Name == "Name" && + e.NewValue is string && !object.Equals(e.OldValue, e.NewValue)) { + // changing the name of the component + generator.NotifyComponentRenamed(e.Component, (string)e.NewValue, (string)e.OldValue); + } + } catch (Exception ex) { + MessageService.ShowException(ex, ""); + } + } + } + void InitializeEvents() { designSurface.Loading += designSurface_Loading; @@ -214,7 +227,7 @@ namespace ICSharpCode.FormsDesigner IComponentChangeService componentChangeService = (IComponentChangeService)GetService(typeof(IComponentChangeService)); if (componentChangeService != null) { - componentChangeService.ComponentChanged += componentChangeService_ComponentChanged; + componentChangeService.ComponentChanged += ComponentChanged; componentChangeService.ComponentAdded += componentChangeService_ComponentAdded; componentChangeService.ComponentRemoved += componentChangeService_ComponentRemoved; componentChangeService.ComponentRename += componentChangeService_ComponentRename; @@ -252,11 +265,6 @@ namespace ICSharpCode.FormsDesigner { OnComponentAdded(new ComponentEventArgsProxy { Component = e.Component }); } - - void componentChangeService_ComponentChanged(object sender, ComponentChangedEventArgs e) - { - OnComponentChanged(new ComponentChangedEventArgsProxy { Component = e.Component, Member = e.Member, NewValue = e.NewValue, OldValue = e.OldValue }); - } void designSurface_Unloaded(object sender, EventArgs e) { @@ -265,6 +273,7 @@ namespace ICSharpCode.FormsDesigner void designSurface_Unloading(object sender, EventArgs e) { + unloading = true; OnDesignSurfaceUnloading(e); } @@ -275,11 +284,13 @@ namespace ICSharpCode.FormsDesigner void designSurface_Loaded(object sender, LoadedEventArgs e) { + unloading = false; OnDesignSurfaceLoaded(e); } void designSurface_Loading(object sender, EventArgs e) { + unloading = false; OnDesignSurfaceLoading(e); } #endregion @@ -307,6 +318,7 @@ namespace ICSharpCode.FormsDesigner { var loader = new SharpDevelopDesignerLoader(this, generator, loaderProvider.CreateLoader(generator)); var provider = loader.GetCodeDomProviderInstance(); + this.generator = generator; if (provider != null) { AddService(typeof(System.CodeDom.Compiler.CodeDomProvider), provider); } diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/IFormsDesigner.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/IFormsDesigner.cs index 92b9c78daa..db0e8104de 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/IFormsDesigner.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/IFormsDesigner.cs @@ -26,6 +26,8 @@ namespace ICSharpCode.FormsDesigner void ShowSourceCode(IComponent component, EventDescriptor edesc, string methodName); SharpDevelopDesignerOptions DesignerOptions { get; } + + void MakeDirty(); } public enum ResourceType