From eb09b62e33fff1e684ae3259a44e2b7647c50eb3 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 24 May 2009 21:32:37 +0000 Subject: [PATCH] Fixed two editor bugs introduced in revision 4138. Ask user to save unsaved changes when closing SharpDevelop. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4140 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../AvalonEdit.AddIn/Src/CodeEditor.cs | 4 +++- .../Gui/EditingCommandHandler.cs | 5 ++++- .../Project/Src/Gui/Workbench/WpfWorkbench.cs | 17 +++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) 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(); + } } } }