diff --git a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Extensions.cs b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Extensions.cs index 92aed085f3..c6c143bc2d 100644 --- a/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Extensions.cs +++ b/src/AddIns/BackendBindings/XamlBinding/XamlBinding/Extensions.cs @@ -362,7 +362,9 @@ namespace ICSharpCode.XamlBinding public static Brush ToBrush(this Color color) { - return new SolidColorBrush(color); + var b = new SolidColorBrush(color); + b.Freeze(); + return b; } } } diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs index faf2ca022a..e91c7e8c40 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs @@ -778,12 +778,13 @@ namespace ICSharpCode.AvalonEdit.Rendering TextRunProperties CreateGlobalTextRunProperties() { - return new GlobalTextRunProperties { - typeface = this.CreateTypeface(), - fontRenderingEmSize = FontSize, - foregroundBrush = (Brush)GetValue(Control.ForegroundProperty), - cultureInfo = CultureInfo.CurrentCulture - }; + var p = new GlobalTextRunProperties(); + p.typeface = this.CreateTypeface(); + p.fontRenderingEmSize = FontSize; + p.foregroundBrush = (Brush)GetValue(Control.ForegroundProperty); + ExtensionMethods.CheckIsFrozen(p.foregroundBrush); + p.cultureInfo = CultureInfo.CurrentCulture; + return p; } VisualLineTextParagraphProperties CreateParagraphProperties(TextRunProperties defaultTextRunProperties) diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/VisualLineElementTextRunProperties.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/VisualLineElementTextRunProperties.cs index 00cddc180e..b4011dcf9e 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/VisualLineElementTextRunProperties.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/VisualLineElementTextRunProperties.cs @@ -6,6 +6,7 @@ using System.Globalization; using System.Windows; using System.Windows.Media; using System.Windows.Media.TextFormatting; +using ICSharpCode.AvalonEdit.Utils; namespace ICSharpCode.AvalonEdit.Rendering { @@ -76,6 +77,7 @@ namespace ICSharpCode.AvalonEdit.Rendering /// public void SetBackgroundBrush(Brush value) { + ExtensionMethods.CheckIsFrozen(value); backgroundBrush = value; } @@ -143,6 +145,7 @@ namespace ICSharpCode.AvalonEdit.Rendering /// public void SetForegroundBrush(Brush value) { + ExtensionMethods.CheckIsFrozen(value); foregroundBrush = value; } @@ -177,6 +180,7 @@ namespace ICSharpCode.AvalonEdit.Rendering /// public void SetTextDecorations(TextDecorationCollection value) { + ExtensionMethods.CheckIsFrozen(value); textDecorations = value; } @@ -196,6 +200,7 @@ namespace ICSharpCode.AvalonEdit.Rendering /// public void SetTextEffects(TextEffectCollection value) { + ExtensionMethods.CheckIsFrozen(value); textEffects = value; } } diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/ExtensionMethods.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/ExtensionMethods.cs index bb017262b4..2dec831363 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/ExtensionMethods.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Utils/ExtensionMethods.cs @@ -3,14 +3,12 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Windows; using System.Windows.Controls; using System.Windows.Media; -using System.Windows.Threading; using System.Xml; -using ICSharpCode.AvalonEdit.Document; - namespace ICSharpCode.AvalonEdit.Utils { static class ExtensionMethods @@ -187,5 +185,12 @@ namespace ICSharpCode.AvalonEdit.Utils return new Rect(rect.Location.ToWpf(), rect.Size.ToWpf()); } #endregion + + [Conditional("DEBUG")] + public static void CheckIsFrozen(Freezable f) + { + if (f != null && !f.IsFrozen) + Debug.WriteLine("Performance warning: Not frozen: " + f.ToString()); + } } }