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 @@ +