From 9ff81633e2a7b21e06749f4b6bf26420627d6961 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 31 Aug 2010 18:08:19 +0200 Subject: [PATCH] Compile AvalonEdit for .NET 4.0 and make use of SetCurrentValue. --- .../ICSharpCode.AvalonEdit.Tests.csproj | 5 +++- .../ICSharpCode.AvalonEdit.csproj | 11 +++++--- .../ICSharpCode.AvalonEdit/TextEditor.cs | 15 ++++++++--- .../Utils/TextFormatterFactory.cs | 25 +++++++++++++++++-- 4 files changed, 46 insertions(+), 10 deletions(-) diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/ICSharpCode.AvalonEdit.Tests.csproj b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/ICSharpCode.AvalonEdit.Tests.csproj index 59db5a09db..ea99e5af49 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/ICSharpCode.AvalonEdit.Tests.csproj +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit.Tests/ICSharpCode.AvalonEdit.Tests.csproj @@ -7,7 +7,7 @@ Library ICSharpCode.AvalonEdit ICSharpCode.AvalonEdit.Tests - v3.5 + v4.0 Properties "C:\Program Files\SharpDevelop\3.0\bin\..\AddIns\AddIns\Misc\SourceAnalysis\Settings.SourceAnalysis" True @@ -61,6 +61,9 @@ 3.5 + + 4.0 + 3.5 diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj index 929867a4fa..93235d0379 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/ICSharpCode.AvalonEdit.csproj @@ -1,5 +1,5 @@  - + {6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} Debug @@ -7,7 +7,7 @@ Library ICSharpCode.AvalonEdit ICSharpCode.AvalonEdit - v3.5 + v4.0 Properties "C:\Program Files\SharpDevelop\3.0\bin\..\AddIns\AddIns\Misc\SourceAnalysis\Settings.SourceAnalysis" False @@ -29,14 +29,14 @@ Full False True - DEBUG;TRACE + DEBUG;TRACE;DOTNET4 false PdbOnly True False - TRACE + TRACE;DOTNET4 False @@ -63,6 +63,9 @@ + + 4.0 + 3.5 diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/TextEditor.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/TextEditor.cs index e4fbbdd2b1..e284fb2503 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/TextEditor.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/TextEditor.cs @@ -58,8 +58,17 @@ namespace ICSharpCode.AvalonEdit textArea.TextView.Services.AddService(typeof(TextEditor), this); - this.Options = textArea.Options; - this.Document = new TextDocument(); + SetCurrentPropertyValue(OptionsProperty, textArea.Options); + SetCurrentPropertyValue(DocumentProperty, new TextDocument()); + } + + void SetCurrentPropertyValue(DependencyProperty property, object value) + { + #if DOTNET4 + SetCurrentValue(property, value); + #else + SetValue(property, value); + #endif } #endregion @@ -431,7 +440,7 @@ namespace ICSharpCode.AvalonEdit if (e.PropertyName == "IsOriginalFile") { TextDocument document = this.Document; if (document != null) { - this.IsModified = !document.UndoStack.IsOriginalFile; + SetCurrentPropertyValue(IsModifiedProperty, Boxes.Box(!document.UndoStack.IsOriginalFile)); } return true; } else { diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/TextFormatterFactory.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/TextFormatterFactory.cs index 8eb879d1df..877bf461fe 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/TextFormatterFactory.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/TextFormatterFactory.cs @@ -20,6 +20,7 @@ namespace ICSharpCode.AvalonEdit.Utils /// static class TextFormatterFactory { + #if !DOTNET4 readonly static DependencyProperty TextFormattingModeProperty; static TextFormatterFactory() @@ -30,6 +31,7 @@ namespace ICSharpCode.AvalonEdit.Utils TextFormattingModeProperty = textOptionsType.GetField("TextFormattingModeProperty").GetValue(null) as DependencyProperty; } } + #endif /// /// Creates a using the formatting mode used by the specified owner object. @@ -38,7 +40,9 @@ namespace ICSharpCode.AvalonEdit.Utils { if (owner == null) throw new ArgumentNullException("owner"); - // return TextFormatter.Create(TextOptions.GetTextFormattingMode(this)); + #if DOTNET4 + return TextFormatter.Create(TextOptions.GetTextFormattingMode(owner)); + #else if (TextFormattingModeProperty != null) { object formattingMode = owner.GetValue(TextFormattingModeProperty); return (TextFormatter)typeof(TextFormatter).InvokeMember( @@ -50,6 +54,7 @@ namespace ICSharpCode.AvalonEdit.Utils } else { return TextFormatter.Create(); } + #endif } /// @@ -58,8 +63,11 @@ namespace ICSharpCode.AvalonEdit.Utils /// public static bool PropertyChangeAffectsTextFormatter(DependencyProperty dp) { - // return dp == TextOptions.TextFormattingModeProperty; + #if DOTNET4 + return dp == TextOptions.TextFormattingModeProperty; + #else return dp == TextFormattingModeProperty && TextFormattingModeProperty != null; + #endif } /// @@ -83,6 +91,18 @@ namespace ICSharpCode.AvalonEdit.Utils emSize = TextBlock.GetFontSize(element); if (foreground == null) foreground = TextBlock.GetForeground(element); + #if DOTNET4 + return new FormattedText( + text, + CultureInfo.CurrentCulture, + FlowDirection.LeftToRight, + typeface, + emSize.Value, + foreground, + null, + TextOptions.GetTextFormattingMode(element) + ); + #else if (TextFormattingModeProperty != null) { object formattingMode = element.GetValue(TextFormattingModeProperty); return (FormattedText)Activator.CreateInstance( @@ -106,6 +126,7 @@ namespace ICSharpCode.AvalonEdit.Utils foreground ); } + #endif } } }