From 01839c7a96cb2dd13d56c4cf0d4468bdb8303819 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Tue, 23 Aug 2011 19:11:21 +0200 Subject: [PATCH] fix EventHandlerProxies --- .../FormsDesignerViewContent.cs | 4 +- .../Project/FormsDesignerAppDomainHost.cs | 24 ++++----- .../Project/Src/EventHandlerProxy.cs | 54 +++++++++++++------ 3 files changed, 53 insertions(+), 29 deletions(-) diff --git a/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs b/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs index 9f177e1215..3b50c08bd3 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs @@ -331,7 +331,7 @@ namespace ICSharpCode.FormsDesigner LoggingService.Info("Form Designer: BEGIN INITIALIZE"); appDomainHost.AddService(typeof(IMessageService), new FormsMessageService()); - appDomainHost.AddService(typeof(System.Windows.Forms.Design.IUIService), new UIService(this, this)); + appDomainHost.AddService(typeof(System.Windows.Forms.Design.IUIService), new UIService(this, appDomainHost)); appDomainHost.AddService(typeof(IHelpService), new HelpService()); @@ -420,7 +420,7 @@ namespace ICSharpCode.FormsDesigner } } - void ComponentChanged(object sender, ComponentChangedEventArgs e) + 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); diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs index 5fc2c848fb..2f81344a80 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs @@ -141,36 +141,36 @@ namespace ICSharpCode.FormsDesigner } } - public event ComponentChangedEventHandler ComponentChanged; + public event EventHandler ComponentChanged; - protected virtual void OnComponentChanged(ComponentChangedEventArgs e) + protected virtual void OnComponentChanged(ComponentChangedEventArgsProxy e) { if (ComponentChanged != null) { ComponentChanged(this, e); } } - public event ComponentEventHandler ComponentAdded; + public event EventHandler ComponentAdded; - protected virtual void OnComponentAdded(ComponentEventArgs e) + protected virtual void OnComponentAdded(ComponentEventArgsProxy e) { if (ComponentAdded != null) { ComponentAdded(this, e); } } - public event ComponentEventHandler ComponentRemoved; + public event EventHandler ComponentRemoved; - protected virtual void OnComponentRemoved(ComponentEventArgs e) + protected virtual void OnComponentRemoved(ComponentEventArgsProxy e) { if (ComponentRemoved != null) { ComponentRemoved(this, e); } } - public event ComponentRenameEventHandler ComponentRename; + public event EventHandler ComponentRename; - protected virtual void OnComponentRename(ComponentRenameEventArgs e) + protected virtual void OnComponentRename(ComponentRenameEventArgsProxy e) { if (ComponentRename != null) { ComponentRename(this, e); @@ -230,22 +230,22 @@ namespace ICSharpCode.FormsDesigner void componentChangeService_ComponentRename(object sender, ComponentRenameEventArgs e) { - OnComponentRename(e); + OnComponentRename(new ComponentRenameEventArgsProxy { Component = e.Component, NewName = e.NewName, OldName = e.OldName }); } void componentChangeService_ComponentRemoved(object sender, ComponentEventArgs e) { - OnComponentRemoved(e); + OnComponentRemoved(new ComponentEventArgsProxy { Component = e.Component }); } void componentChangeService_ComponentAdded(object sender, ComponentEventArgs e) { - OnComponentAdded(e); + OnComponentAdded(new ComponentEventArgsProxy { Component = e.Component }); } void componentChangeService_ComponentChanged(object sender, ComponentChangedEventArgs e) { - OnComponentChanged(e); + OnComponentChanged(new ComponentChangedEventArgsProxy { Component = e.Component, Member = e.Member, NewValue = e.NewValue, OldValue = e.OldValue }); } void designSurface_Unloading(object sender, EventArgs e) diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/EventHandlerProxy.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/EventHandlerProxy.cs index 9a353c11fb..6968bce8ad 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/EventHandlerProxy.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/EventHandlerProxy.cs @@ -1,6 +1,7 @@ // Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using System.ComponentModel; using System.ComponentModel.Design; using System.Runtime.InteropServices; @@ -78,67 +79,90 @@ namespace ICSharpCode.FormsDesigner } } + [Serializable] + public class ComponentEventArgsProxy : EventArgs + { + public IComponent Component { get; set; } + } + public class ComponentEventHandlerProxy : MarshalByRefObject { - ComponentEventHandler underlyingHandler; - ComponentEventHandler proxyHandler; + EventHandler underlyingHandler; + EventHandler proxyHandler; - public ComponentEventHandlerProxy(ComponentEventHandler underlyingHandler) + public ComponentEventHandlerProxy(EventHandler underlyingHandler) { this.underlyingHandler = underlyingHandler; this.proxyHandler = OnEvent; } - void OnEvent(object sender, ComponentEventArgs e) + void OnEvent(object sender, ComponentEventArgsProxy e) { underlyingHandler(sender, e); } - public static implicit operator ComponentEventHandler(ComponentEventHandlerProxy proxy) + public static implicit operator EventHandler(ComponentEventHandlerProxy proxy) { return proxy.proxyHandler; } } + [Serializable] + public class ComponentRenameEventArgsProxy : EventArgs + { + public object Component { get; set; } + public string OldName { get; set; } + public string NewName { get; set; } + } + public class ComponentRenameEventHandlerProxy : MarshalByRefObject { - ComponentRenameEventHandler underlyingHandler; - ComponentRenameEventHandler proxyHandler; + EventHandler underlyingHandler; + EventHandler proxyHandler; - public ComponentRenameEventHandlerProxy(ComponentRenameEventHandler underlyingHandler) + public ComponentRenameEventHandlerProxy(EventHandler underlyingHandler) { this.underlyingHandler = underlyingHandler; this.proxyHandler = OnEvent; } - void OnEvent(object sender, ComponentRenameEventArgs e) + void OnEvent(object sender, ComponentRenameEventArgsProxy e) { underlyingHandler(sender, e); } - public static implicit operator ComponentRenameEventHandler(ComponentRenameEventHandlerProxy proxy) + public static implicit operator EventHandler(ComponentRenameEventHandlerProxy proxy) { return proxy.proxyHandler; } } + [Serializable] + public class ComponentChangedEventArgsProxy : EventArgs + { + public object Component { get; set; } + public MemberDescriptor Member { get; set; } + public object OldValue { get; set; } + public object NewValue { get; set; } + } + public class ComponentChangedEventHandlerProxy : MarshalByRefObject { - ComponentChangedEventHandler underlyingHandler; - ComponentChangedEventHandler proxyHandler; + EventHandler underlyingHandler; + EventHandler proxyHandler; - public ComponentChangedEventHandlerProxy(ComponentChangedEventHandler underlyingHandler) + public ComponentChangedEventHandlerProxy(EventHandler underlyingHandler) { this.underlyingHandler = underlyingHandler; this.proxyHandler = OnEvent; } - void OnEvent(object sender, ComponentChangedEventArgs e) + void OnEvent(object sender, ComponentChangedEventArgsProxy e) { underlyingHandler(sender, e); } - public static implicit operator ComponentChangedEventHandler(ComponentChangedEventHandlerProxy proxy) + public static implicit operator EventHandler(ComponentChangedEventHandlerProxy proxy) { return proxy.proxyHandler; }