From 053bdcee81f9dc10d97652a13e8fa5125d482ad0 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 8 Nov 2008 21:06:15 +0000 Subject: [PATCH] Add AvalonEdit to setup. Fixed text selection at end of document. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3636 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../AvalonEdit.AddIn/Src/AvalonEditViewContent.cs | 9 ++++++++- .../ICSharpCode.AvalonEdit/Gui/SelectionMouseHandler.cs | 2 ++ .../AvalonEdit/ICSharpCode.AvalonEdit/Gui/TextView.cs | 7 +++++++ .../ICSharpCode.AvalonEdit/Utils/ExtensionMethods.cs | 4 +++- src/Setup/Files.wxs | 3 +++ src/Setup/Setup.wxs | 1 + 6 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs index 423d7ab556..d972c25f47 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/AvalonEditViewContent.cs @@ -5,12 +5,13 @@ // $Revision$ // +using ICSharpCode.AvalonEdit.Document; using System; using System.IO; +using System.Windows.Media; using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; -using System.Windows.Media; namespace ICSharpCode.AvalonEdit.AddIn { @@ -25,6 +26,12 @@ namespace ICSharpCode.AvalonEdit.AddIn { this.Files.Add(file); file.ForceInitializeView(this); + textEditor.Document.Changed += textEditor_Document_Changed; + } + + void textEditor_Document_Changed(object sender, DocumentChangeEventArgs e) + { + PrimaryFile.IsDirty = true; } public override object Content { diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/SelectionMouseHandler.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/SelectionMouseHandler.cs index 12fb6fb9ff..46b44e903a 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/SelectionMouseHandler.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/SelectionMouseHandler.cs @@ -329,6 +329,8 @@ namespace ICSharpCode.AvalonEdit.Gui if (pos.Y > textView.ActualHeight) pos.Y = textView.ActualHeight; pos += textView.ScrollOffset; + if (pos.Y > textView.DocumentHeight) + pos.Y = textView.DocumentHeight - ExtensionMethods.Epsilon; VisualLine line = textView.GetVisualLineFromVisualTop(pos.Y); if (line != null) { visualColumn = line.GetVisualColumn(pos); diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/TextView.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/TextView.cs index 9d240764bb..ce1cbe59c4 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/TextView.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Gui/TextView.cs @@ -336,6 +336,13 @@ namespace ICSharpCode.AvalonEdit.Gui return heightTree.CollapseText(start, end); } + /// + /// Gets the height of the document. + /// + public double DocumentHeight { + get { return heightTree.TotalHeight; } + } + #region Measure TextFormatter formatter; List allVisualLines = new List(); diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/ExtensionMethods.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/ExtensionMethods.cs index 49d6b5a514..a3bf7310bb 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/ExtensionMethods.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/ExtensionMethods.cs @@ -19,6 +19,8 @@ namespace ICSharpCode.AvalonEdit.Utils { static class ExtensionMethods { + public const double Epsilon = 1e-8; + /// /// Returns true if the doubles are close (difference smaller than 10^-8). /// @@ -26,7 +28,7 @@ namespace ICSharpCode.AvalonEdit.Utils { if (d1 == d2) // required for infinities return true; - return Math.Abs(d1 - d2) < 1e-8; + return Math.Abs(d1 - d2) < Epsilon; } /// diff --git a/src/Setup/Files.wxs b/src/Setup/Files.wxs index c9fcf54b98..04309a21e3 100644 --- a/src/Setup/Files.wxs +++ b/src/Setup/Files.wxs @@ -706,6 +706,9 @@ + + + diff --git a/src/Setup/Setup.wxs b/src/Setup/Setup.wxs index 88395147c4..d78560d7fd 100644 --- a/src/Setup/Setup.wxs +++ b/src/Setup/Setup.wxs @@ -167,6 +167,7 @@ +