Browse Source

manually merge changes in Forms Designer

formsdesignerappdomain
Siegfried Pammer 14 years ago
parent
commit
a035b67d57
  1. 5
      src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingDesignerGenerator.cs
  2. 5
      src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerGenerator.cs
  3. 2
      src/AddIns/Debugger/Debugger.AddIn/Pads/Commands/ParallelStacksViewCommands.cs
  4. 2
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/HiddenDefinition/HiddenDefinitionRenderer.cs
  5. 32
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/DesignerGenerator/AbstractDesignerGenerator.cs
  6. 7
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/DesignerGenerator/CSharpDesignerGenerator.cs
  7. 8
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/DesignerGenerator/VBNetDesignerGenerator.cs
  8. 10
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/DesignerLoader/NRefactoryDesignerLoader.cs
  9. 20
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormKeyHandler.cs
  10. 90
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs
  11. 12
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/Services/SharpDevelopCommandProvider.cs
  12. 4
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/Toolbox/AddComponentsDialog.cs
  13. 4
      src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/Toolbox/ToolboxProvider.cs
  14. 15
      src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs
  15. 2
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/IDesignerGenerator.cs
  16. 6
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/EventBindingService.cs
  17. 4
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/TypeResolutionService.cs

5
src/AddIns/BackendBindings/Scripting/Project/Src/ScriptingDesignerGenerator.cs

@ -291,5 +291,10 @@ namespace ICSharpCode.Scripting @@ -291,5 +291,10 @@ namespace ICSharpCode.Scripting
{
throw new NotImplementedException();
}
public void NotifyComponentRenamed(object component, string newName, string oldName)
{
throw new NotImplementedException();
}
}
}

5
src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerGenerator.cs

@ -126,5 +126,10 @@ namespace ICSharpCode.WixBinding @@ -126,5 +126,10 @@ namespace ICSharpCode.WixBinding
{
return new ArrayList();
}
public void NotifyComponentRenamed(object component, string newName, string oldName)
{
throw new NotImplementedException();
}
}
}

2
src/AddIns/Debugger/Debugger.AddIn/Pads/Commands/ParallelStacksViewCommands.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// 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;

2
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/HiddenDefinition/HiddenDefinitionRenderer.cs

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// 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;

32
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/DesignerGenerator/AbstractDesignerGenerator.cs

@ -211,14 +211,26 @@ namespace ICSharpCode.FormsDesigner @@ -211,14 +211,26 @@ namespace ICSharpCode.FormsDesigner
{
}
public virtual void NotifyFormRenamed(string newName)
public virtual void NotifyComponentRenamed(object component, string newName, string oldName)
{
Reparse();
LoggingService.Info("Renaming form to " + newName);
LoggingService.Info(string.Format("Renaming form '{0}' to '{1}'.", oldName, newName));
if (this.formClass == null) {
LoggingService.Warn("Cannot rename, formClass not found");
} else {
ICSharpCode.SharpDevelop.Refactoring.FindReferencesAndRenameHelper.RenameClass(this.formClass, newName);
// if (viewContent.Host == null || viewContent.Host.Container == null ||
// viewContent.Host.Container.Components == null || viewContent.Host.Container.Components.Count == 0)
// return;
//
// // verify if we should rename the class
// if (viewContent.Host.Container.Components[0] == component) { ICSharpCode.SharpDevelop.Refactoring.FindReferencesAndRenameHelper.RenameClass(this.formClass, newName);
// } else {
// // rename a member - if exists
// IField field = GetField(this.formClass, oldName);
// if (field != null) {
// ICSharpCode.SharpDevelop.Refactoring.FindReferencesAndRenameHelper.RenameMember(field, newName);
// }
// }
Reparse();
}
}
@ -254,7 +266,8 @@ namespace ICSharpCode.FormsDesigner @@ -254,7 +266,8 @@ namespace ICSharpCode.FormsDesigner
// generate file and get initialize components string
StringWriter writer = new StringWriter();
CodeDOMGenerator domGenerator = new CodeDOMGenerator(CreateCodeDomProvider(), tabs + '\t');
string indentation = tabs + EditorControlService.GlobalOptions.IndentationString;
CodeDOMGenerator domGenerator = new CodeDOMGenerator(CreateCodeDomProvider(), indentation);
domGenerator.ConvertContentDefinition(initializeComponent, writer);
string statements = writer.ToString();
@ -479,7 +492,7 @@ namespace ICSharpCode.FormsDesigner @@ -479,7 +492,7 @@ namespace ICSharpCode.FormsDesigner
LoggingService.Debug("Forms designer: AbstractDesignerGenerator.InsertComponentEvent: eventMethodName=" + eventMethodName);
foreach (IMethod method in completeClass.Methods) {
if (method.Name == eventMethodName) {
if (CompareMethodNames(method.Name, eventMethodName)) {
file = method.DeclaringType.CompilationUnit.FileName;
OpenedFile openedFile = FileService.GetOpenedFile(file);
IDocument doc;
@ -518,6 +531,11 @@ namespace ICSharpCode.FormsDesigner @@ -518,6 +531,11 @@ namespace ICSharpCode.FormsDesigner
return true;
}
protected virtual bool CompareMethodNames(string strA, string strB)
{
return strA == strB;
}
/// <summary>
/// Gets a method implementing the signature specified by the event descriptor
/// </summary>
@ -587,8 +605,4 @@ namespace ICSharpCode.FormsDesigner @@ -587,8 +605,4 @@ namespace ICSharpCode.FormsDesigner
return null;
}
}
}

7
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/DesignerGenerator/CSharpDesignerGenerator.cs

@ -35,7 +35,8 @@ namespace ICSharpCode.FormsDesigner @@ -35,7 +35,8 @@ namespace ICSharpCode.FormsDesigner
body = "// TODO: Implement " + eventMethodName;
}
}
b.AppendLine(indentation + "\t" + body);
string singleIndent = EditorControlService.GlobalOptions.IndentationString;
b.AppendLine(indentation + singleIndent + body);
b.AppendLine(indentation + "}");
return b.ToString();
}
@ -94,6 +95,10 @@ namespace ICSharpCode.FormsDesigner @@ -94,6 +95,10 @@ namespace ICSharpCode.FormsDesigner
gen.CurrentClassPart = c;
int line = gen.GetEventHandlerInsertionLine(c);
if (line > document.TotalNumberOfLines) {
lineNumber = document.TotalNumberOfLines;
return;
}
int offset = document.GetLine(line).Offset;

8
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/DesignerGenerator/VBNetDesignerGenerator.cs

@ -53,7 +53,8 @@ namespace ICSharpCode.FormsDesigner @@ -53,7 +53,8 @@ namespace ICSharpCode.FormsDesigner
body = "' TODO: Implement " + eventMethodName;
}
}
b.AppendLine(indentation + "\t" + body);
string singleIndent = EditorControlService.GlobalOptions.IndentationString;
b.AppendLine(indentation + singleIndent + body);
b.AppendLine(indentation + "End Sub");
return b.ToString();
}
@ -67,5 +68,10 @@ namespace ICSharpCode.FormsDesigner @@ -67,5 +68,10 @@ namespace ICSharpCode.FormsDesigner
}
return v.Text;
}
protected override bool CompareMethodNames(string strA, string strB)
{
return String.Compare(strA, strB, StringComparison.InvariantCultureIgnoreCase) == 0;
}
}
}

10
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/DesignerLoader/NRefactoryDesignerLoader.cs

@ -89,16 +89,10 @@ namespace ICSharpCode.FormsDesigner @@ -89,16 +89,10 @@ namespace ICSharpCode.FormsDesigner
const string missingReferenceMessage = "Your project is missing a reference to '${Name}' - please add it using 'Project > Add Reference'.";
if (formClass.ProjectContent.GetClass("System.Drawing.Point", 0) == null) {
throw new FormsDesignerLoadException(
StringParser.Parse(
missingReferenceMessage, new string[,] {{ "Name" , "System.Drawing"}}
));
throw new FormsDesignerLoadException(StringParser.Parse(missingReferenceMessage, new StringTagPair("Name", "System.Drawing")));
}
if (formClass.ProjectContent.GetClass("System.Windows.Forms.Form", 0) == null) {
throw new FormsDesignerLoadException(
StringParser.Parse(
missingReferenceMessage, new string[,] {{ "Name" , "System.Windows.Forms"}}
));
throw new FormsDesignerLoadException(StringParser.Parse(missingReferenceMessage, new StringTagPair("Name" , "System.Windows.Forms")));
}
List<KeyValuePair<string, CompilationUnit>> compilationUnits = new List<KeyValuePair<string, CompilationUnit>>();

20
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormKeyHandler.cs

@ -72,16 +72,16 @@ namespace ICSharpCode.FormsDesigner @@ -72,16 +72,16 @@ namespace ICSharpCode.FormsDesigner
if (formDesigner == null || formDesigner.AppDomainHost == null) {
return false;
}
if (formDesigner.UserContent != null && !((Control)formDesigner.UserContent).ContainsFocus) {
return false;
}
Control originControl = Control.FromChildHandle(m.HWnd);
if (originControl != null && formDesigner.UserContent != null && !(formDesigner.UserContent == originControl || ((WindowsFormsHost)formDesigner.UserContent).Child.Contains(originControl))) {
// Ignore if message origin not in forms designer
// (e.g. navigating the main menu)
return false;
}
// if (formDesigner.UserContent != null && !((Control)formDesigner.UserContent).ContainsFocus) {
// return false;
// }
//
// Control originControl = Control.FromChildHandle(m.HWnd);
// if (originControl != null && formDesigner.UserContent != null && !(formDesigner.UserContent == originControl || ((WindowsFormsHost)formDesigner.UserContent).Child.Contains(originControl))) {
// // Ignore if message origin not in forms designer
// // (e.g. navigating the main menu)
// return false;
// }
Keys keyPressed = (Keys)m.WParam.ToInt32() | Control.ModifierKeys;

90
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/FormsDesignerViewContent.cs

@ -12,6 +12,7 @@ using System.Diagnostics; @@ -12,6 +12,7 @@ using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
@ -21,6 +22,7 @@ using ICSharpCode.FormsDesigner.Gui.OptionPanels; @@ -21,6 +22,7 @@ using ICSharpCode.FormsDesigner.Gui.OptionPanels;
using ICSharpCode.FormsDesigner.Services;
using ICSharpCode.FormsDesigner.UndoRedo;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
@ -29,7 +31,7 @@ namespace ICSharpCode.FormsDesigner @@ -29,7 +31,7 @@ namespace ICSharpCode.FormsDesigner
{
public class FormsDesignerViewContent : AbstractViewContentHandlingLoadErrors, IClipboardHandler, IUndoHandler, IHasPropertyContainer, IContextHelpProvider, IToolsHost, IFileDocumentProvider, IFormsDesigner
{
readonly Control pleaseWaitLabel = new Label() {Text=StringParser.Parse("${res:Global.PleaseWait}"), TextAlign=ContentAlignment.MiddleCenter};
readonly Control pleaseWaitLabel = new Label() { Text = StringParser.Parse("${res:Global.PleaseWait}"), TextAlign=ContentAlignment.MiddleCenter };
bool disposing;
readonly IViewContent primaryViewContent;
@ -335,7 +337,7 @@ namespace ICSharpCode.FormsDesigner @@ -335,7 +337,7 @@ namespace ICSharpCode.FormsDesigner
appDomainHost.AddService(typeof(IHelpService), new HelpService());
// appDomainHost.AddService(typeof(IProjectResourceService), new ProjectResourceService(ParserService.GetParseInformation(this.DesignerCodeFile.FileName).CompilationUnit.ProjectContent));
// appDomainHost.AddService(typeof(IProjectResourceService), CreateProjectResourceService());
// appDomainHost.AddService(typeof(IImageResourceEditorDialogWrapper), new ImageResourceEditorDialogWrapper(ParserService.GetParseInformation(this.DesignerCodeFile.FileName).CompilationUnit.ProjectContent.Project as IProject));
// Provide the ImageResourceEditor for all Image and Icon properties
@ -377,6 +379,22 @@ namespace ICSharpCode.FormsDesigner @@ -377,6 +379,22 @@ namespace ICSharpCode.FormsDesigner
LoggingService.Info("Form Designer: END INITIALIZE");
}
ProjectResourceService CreateProjectResourceService()
{
IProjectContent projectContent = GetProjectContentForFile();
return new ProjectResourceService(projectContent);
}
IProjectContent GetProjectContentForFile()
{
ParseInformation parseInfo = ParserService.GetParseInformation(this.DesignerCodeFile.FileName);
if (parseInfo != null) {
return parseInfo.CompilationUnit.ProjectContent;
}
return DefaultProjectContent.DummyProjectContent;
}
SharpDevelopDesignerOptions LoadOptions()
{
int w = PropertyService.Get("FormsDesigner.DesignerOptions.GridSizeWidth", 8);
@ -406,6 +424,7 @@ namespace ICSharpCode.FormsDesigner @@ -406,6 +424,7 @@ namespace ICSharpCode.FormsDesigner
hasUnmergedChanges = true;
this.DesignerCodeFile.MakeDirty();
this.resourceStore.MarkResourceFilesAsDirty();
System.Windows.Input.CommandManager.InvalidateRequerySuggested();
}
bool shouldUpdateSelectableObjects = false;
@ -427,13 +446,11 @@ namespace ICSharpCode.FormsDesigner @@ -427,13 +446,11 @@ namespace ICSharpCode.FormsDesigner
if (!loading && !unloading) {
try {
this.MakeDirty();
if (e.Component != null && e.Component == appDomainHost.Host.RootComponent
&& e.Member != null && e.Member.Name == "Name" && e.NewValue is string
&& !object.Equals(e.OldValue, e.NewValue))
{
// changing the name of the form
generator.NotifyFormRenamed((string)e.NewValue);
}
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);
}
@ -457,16 +474,10 @@ namespace ICSharpCode.FormsDesigner @@ -457,16 +474,10 @@ namespace ICSharpCode.FormsDesigner
bool savedIsDirty = (this.DesignerCodeFile == null) ? false : this.DesignerCodeFile.IsDirty;
this.UserContent = this.pleaseWaitLabel;
Application.DoEvents();
if (this.DesignerCodeFile != null) {
this.DesignerCodeFile.IsDirty = savedIsDirty;
}
// We cannot dispose the design surface now because of SD2-451:
// When the switch to the source view was triggered by a double-click on an event
// in the PropertyPad, "InvalidOperationException: The container cannot be disposed
// at design time" is thrown.
// This is solved by calling dispose after the double-click event has been processed.
if (appDomainHost != null && appDomainHost.DesignSurfaceName != null) {
appDomainHost.DesignSurfaceLoading -= new EventHandlerProxy(DesignerLoading);
appDomainHost.DesignSurfaceLoaded -= new LoadedEventHandlerProxy(DesignerLoaded);
@ -484,10 +495,43 @@ namespace ICSharpCode.FormsDesigner @@ -484,10 +495,43 @@ namespace ICSharpCode.FormsDesigner
appDomainHost.SelectionChanged -= new EventHandlerProxy(SelectionChangedHandler);
if (disposing) {
appDomainHost.DesignSurfaceUnloaded += delegate {
ServiceContainer serviceContainer = appDomainHost.GetService(typeof(ServiceContainer)) as ServiceContainer;
if (serviceContainer != null) {
// Workaround for .NET bug: .NET unregisters the designer host only if no component throws an exception,
// but then in a finally block assumes that the designer host is already unloaded.
// Thus we would get the confusing "InvalidOperationException: The container cannot be disposed at design time"
// when any component throws an exception.
// See http://community.sharpdevelop.net/forums/p/10928/35288.aspx
// Reproducible with a custom control that has a designer that crashes on unloading
// e.g. http://www.codeproject.com/KB/toolbars/WinFormsRibbon.aspx
// We work around this problem by unregistering the designer host manually.
try {
var services = (Dictionary<Type, object>)typeof(ServiceContainer).InvokeMember(
"Services",
BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.NonPublic,
null, serviceContainer, null);
foreach (var pair in services.ToArray()) {
if (pair.Value is IDesignerHost) {
serviceContainer.GetType().InvokeMember(
"RemoveFixedService",
BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.NonPublic,
null, serviceContainer, new object[] { pair.Key });
}
}
} catch (Exception ex) {
LoggingService.Error(ex);
}
}
};
try {
appDomainHost.DisposeDesignSurface();
} else {
WorkbenchSingleton.SafeThreadAsyncCall(appDomainHost.DisposeDesignSurface);
} catch (ExceptionCollection exceptions) {
foreach (Exception ex in exceptions.Exceptions) {
LoggingService.Error(ex);
}
}
}
@ -541,18 +585,12 @@ namespace ICSharpCode.FormsDesigner @@ -541,18 +585,12 @@ namespace ICSharpCode.FormsDesigner
}
}
internal new object UserContent {
get { return base.UserContent; }
set { base.UserContent = value; }
}
void DesignerLoading(object sender, EventArgs e)
{
LoggingService.Debug("Forms designer: DesignerLoader loading...");
this.reloadPending = false;
this.unloading = false;
this.UserContent = this.pleaseWaitLabel;
Application.DoEvents();
}
void DesignerUnloading(object sender, EventArgs e)
@ -561,7 +599,6 @@ namespace ICSharpCode.FormsDesigner @@ -561,7 +599,6 @@ namespace ICSharpCode.FormsDesigner
this.unloading = true;
if (!this.disposing) {
this.UserContent = this.pleaseWaitLabel;
Application.DoEvents();
}
}
@ -730,6 +767,7 @@ namespace ICSharpCode.FormsDesigner @@ -730,6 +767,7 @@ namespace ICSharpCode.FormsDesigner
object[] selArray = new object[selection.Count];
selection.CopyTo(selArray, 0);
propertyContainer.SelectedObjects = selArray;
System.Windows.Input.CommandManager.InvalidateRequerySuggested();
}
protected void UpdatePropertyPad()
@ -966,12 +1004,10 @@ namespace ICSharpCode.FormsDesigner @@ -966,12 +1004,10 @@ namespace ICSharpCode.FormsDesigner
// the reload can interrupt the starting of the debugger.
// To prevent this, we explicitly raise the Idle event here.
LoggingService.Debug("Forms designer: DebugStarting raises the Idle event to force pending reload now");
Application.DoEvents();
Cursor oldCursor = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
try {
Application.RaiseIdle(EventArgs.Empty);
Application.DoEvents();
} finally {
Cursor.Current = oldCursor;
}

12
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/Services/SharpDevelopCommandProvider.cs

@ -40,12 +40,12 @@ namespace ICSharpCode.FormsDesigner.Services @@ -40,12 +40,12 @@ namespace ICSharpCode.FormsDesigner.Services
throw new Exception();
}
Control panel = ((WindowsFormsHost)vc.UserContent).Child;
if (panel != null) {
Point p = panel.PointToClient(new Point(x, y));
MenuService.ShowContextMenu(this, contextMenuPath, panel, p.X, p.Y);
}
// Control panel = ((WindowsFormsHost)vc.UserContent).Child;
// if (panel != null) {
// Point p = panel.PointToClient(new Point(x, y));
//
// MenuService.ShowContextMenu(this, contextMenuPath, panel, p.X, p.Y);
// }
}
}
}

4
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/Toolbox/AddComponentsDialog.cs

@ -37,7 +37,7 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -37,7 +37,7 @@ namespace ICSharpCode.FormsDesigner.Gui
void PrintGACCache()
{
foreach (DomAssemblyName asm in GacInterop.GetAssemblyList()) {
ListViewItem item = new ListViewItem(new string[] {asm.ShortName, asm.Version});
ListViewItem item = new ListViewItem(new string[] {asm.ShortName, asm.Version.ToString()});
item.Tag = asm.FullName;
gacListView.Items.Add(item);
}
@ -58,7 +58,7 @@ namespace ICSharpCode.FormsDesigner.Gui @@ -58,7 +58,7 @@ namespace ICSharpCode.FormsDesigner.Gui
if (lastAssembly != null) {
name = lastAssembly.FullName;
}
ClearComponentsList(StringParser.Parse("${res:ICSharpCode.SharpDevelop.FormDesigner.Gui.AddSidebarComponents.NoComponentsFound}", new string[,] {{"Name", name}}));
ClearComponentsList(StringParser.Parse("${res:ICSharpCode.SharpDevelop.FormDesigner.Gui.AddSidebarComponents.NoComponentsFound}", new StringTagPair("Name", name)));
}
}
componentListView.EndUpdate();

4
src/AddIns/DisplayBindings/FormsDesigner/FormsDesigner.AddIn/Toolbox/ToolboxProvider.cs

@ -222,6 +222,10 @@ namespace ICSharpCode.FormsDesigner @@ -222,6 +222,10 @@ namespace ICSharpCode.FormsDesigner
static IProject FindProjectContainingType(string type)
{
IProject currentProject = ProjectService.CurrentProject;
if (currentProject == null) {
return null;
}
foreach (IProject project in ProjectService.OpenSolution.Projects) {
if (project != currentProject) {
IProjectContent projectContent = ParserService.GetProjectContent(project);

15
src/AddIns/DisplayBindings/FormsDesigner/Project/FormsDesignerAppDomainHost.cs

@ -141,6 +141,15 @@ namespace ICSharpCode.FormsDesigner @@ -141,6 +141,15 @@ namespace ICSharpCode.FormsDesigner
}
}
public event EventHandler DesignSurfaceUnloaded;
protected virtual void OnDesignSurfaceUnloaded(EventArgs e)
{
if (DesignSurfaceUnloaded != null) {
DesignSurfaceUnloaded(this, e);
}
}
public event EventHandler<ComponentChangedEventArgsProxy> ComponentChanged;
protected virtual void OnComponentChanged(ComponentChangedEventArgsProxy e)
@ -201,6 +210,7 @@ namespace ICSharpCode.FormsDesigner @@ -201,6 +210,7 @@ namespace ICSharpCode.FormsDesigner
designSurface.Loaded += designSurface_Loaded;
designSurface.Flushed += designSurface_Flushed;
designSurface.Unloading += designSurface_Unloading;
designSurface.Unloaded += designSurface_Unloading;
IComponentChangeService componentChangeService = (IComponentChangeService)GetService(typeof(IComponentChangeService));
if (componentChangeService != null) {
@ -247,6 +257,11 @@ namespace ICSharpCode.FormsDesigner @@ -247,6 +257,11 @@ namespace ICSharpCode.FormsDesigner
{
OnComponentChanged(new ComponentChangedEventArgsProxy { Component = e.Component, Member = e.Member, NewValue = e.NewValue, OldValue = e.OldValue });
}
void designSurface_Unloaded(object sender, EventArgs e)
{
OnDesignSurfaceUnloaded(e);
}
void designSurface_Unloading(object sender, EventArgs e)
{

2
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/IDesignerGenerator.cs

@ -15,7 +15,7 @@ namespace ICSharpCode.FormsDesigner @@ -15,7 +15,7 @@ namespace ICSharpCode.FormsDesigner
void MergeFormChanges(CodeCompileUnit unit);
bool InsertComponentEvent(IComponent component, EventDescriptor edesc, string eventMethodName, string body, out string file, out int position);
ICollection GetCompatibleMethods(EventDescriptor edesc);
void NotifyFormRenamed(string newName);
void NotifyComponentRenamed(object component, string newName, string oldName);
Type CodeDomProviderType { get; }
CodeDomProvider CreateCodeDomProvider();
}

6
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/EventBindingService.cs

@ -71,7 +71,11 @@ namespace ICSharpCode.FormsDesigner.Services @@ -71,7 +71,11 @@ namespace ICSharpCode.FormsDesigner.Services
protected override bool ShowCode(IComponent component, EventDescriptor edesc, string methodName)
{
if (formDesigner != null) {
// There were reports of an ArgumentNullException caused by edesc==null.
// Looking at the .NET code calling this method, this can happen when there are two calls to ShowCode() before the Application.Idle
// event gets raised. In that case, ShowCode() already was called for the second set of arguments, and we can safely ignore
// the call with edesc==null.
if (formDesigner != null && edesc != null) {
formDesigner.ShowSourceCode(component, edesc, methodName);
return true;
}

4
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/TypeResolutionService.cs

@ -200,6 +200,10 @@ namespace ICSharpCode.FormsDesigner.Services @@ -200,6 +200,10 @@ namespace ICSharpCode.FormsDesigner.Services
*/
asm = Assembly.LoadFile(tempPath);
MarkFileToDeleteOnReboot(tempPath);
} else if (e.Message.Contains("HRESULT: 0x80131019")) {
logger.Debug(e.Message);
logger.Debug("Attempting to load unverifiable assembly. Ignoring.");
return null;
} else {
throw; // don't ignore other load errors
}

Loading…
Cancel
Save