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