diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs index d64657bcc1..74952fcdcd 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs @@ -346,7 +346,9 @@ namespace ICSharpCode.AvalonEdit.AddIn void TextArea_TextEntered(object sender, TextCompositionEventArgs e) { if (e.Text.Length > 0 && !e.Handled) { - formattingStrategy.FormatLine(GetAdapterFromSender(sender), e.Text[0]); + if (formattingStrategy != null) { + formattingStrategy.FormatLine(GetAdapterFromSender(sender), e.Text[0]); + } } } diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/EditingCommandHandler.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/EditingCommandHandler.cs index 0a306d6398..db5db0df6a 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/EditingCommandHandler.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/EditingCommandHandler.cs @@ -75,7 +75,10 @@ namespace ICSharpCode.AvalonEdit.Gui TextArea textArea = GetTextArea(target); if (textArea != null) { TextComposition textComposition = new TextComposition(InputManager.Current, textArea, "\n"); - textArea.PerformTextInput(new TextCompositionEventArgs(Keyboard.PrimaryDevice, textComposition)); + TextCompositionEventArgs e = new TextCompositionEventArgs(Keyboard.PrimaryDevice, textComposition); + e.RoutedEvent = TextArea.TextInputEvent; + textArea.PerformTextInput(e); + args.Handled = true; } } #endregion diff --git a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs index 60e5ad6f88..4b87c833a1 100644 --- a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs +++ b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs @@ -464,7 +464,24 @@ namespace ICSharpCode.SharpDevelop.Gui { base.OnClosing(e); if (!e.Cancel) { + Project.ProjectService.SaveSolutionPreferences(); + + while (WorkbenchSingleton.Workbench.WorkbenchWindowCollection.Count > 0) { + IWorkbenchWindow window = WorkbenchSingleton.Workbench.WorkbenchWindowCollection[0]; + if (!window.CloseWindow(false)) { + e.Cancel = true; + return; + } + } + + Project.ProjectService.CloseSolution(); + ParserService.StopParserThread(); + this.WorkbenchLayout = null; + + foreach (PadDescriptor padDescriptor in this.PadContentCollection) { + padDescriptor.Dispose(); + } } } }