diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj index d78b2bc383..5d5848c778 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj @@ -63,6 +63,7 @@ + Always @@ -76,9 +77,7 @@ - - AvalonEditViewContent.cs - + SortOptionsDialog.xaml diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs index 7b6c742dff..237e30cc3e 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs @@ -38,7 +38,7 @@ namespace ICSharpCode.AvalonEdit.AddIn CodeEditorOptions options; BracketHighlightRenderer bracketRenderer; - public CodeEditorView() + public CodeEditorView() : base(new Wpf4TextArea()) { this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Help, OnHelpExecuted)); options = ICSharpCode.AvalonEdit.AddIn.Options.CodeEditorOptions.Instance; diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Wpf4TextView.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Wpf4TextView.cs new file mode 100644 index 0000000000..f429eb6a50 --- /dev/null +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Wpf4TextView.cs @@ -0,0 +1,43 @@ +// +// +// +// +// $Revision$ +// + +using System; +using System.Windows; +using System.Windows.Media; +using System.Windows.Media.TextFormatting; + +using ICSharpCode.AvalonEdit.Editing; +using ICSharpCode.AvalonEdit.Rendering; + +namespace ICSharpCode.AvalonEdit.AddIn +{ + /// + /// Adds WPF4 text clarity support to TextView. + /// + public class Wpf4TextView : TextView + { + protected override TextFormatter CreateTextFormatter() + { + return TextFormatter.Create(TextOptions.GetTextFormattingMode(this)); + } + + protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e) + { + base.OnPropertyChanged(e); + if (e.Property == TextOptions.TextFormattingModeProperty) { + RecreateTextFormatter(); + } + } + } + + public class Wpf4TextArea : TextArea + { + public Wpf4TextArea() : base(new Wpf4TextView()) + { + } + } +} diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs index 5f898c781b..71fe6ea6c0 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs @@ -119,6 +119,27 @@ namespace ICSharpCode.AvalonEdit.Rendering DocumentChanged(this, EventArgs.Empty); } + /// + /// Recreates the text formatter that is used internally + /// by calling . + /// + protected void RecreateTextFormatter() + { + if (formatter != null) { + formatter.Dispose(); + formatter = CreateTextFormatter(); + Redraw(); + } + } + + /// + /// Creates a new text formatter. + /// + protected virtual TextFormatter CreateTextFormatter() + { + return TextFormatter.Create(); + } + /// protected virtual bool ReceiveWeakEvent(Type managerType, object sender, EventArgs e) { diff --git a/src/Main/Base/Project/Src/Gui/App.xaml b/src/Main/Base/Project/Src/Gui/App.xaml index 3016f64868..c39e718582 100644 --- a/src/Main/Base/Project/Src/Gui/App.xaml +++ b/src/Main/Base/Project/Src/Gui/App.xaml @@ -15,6 +15,7 @@ + \ No newline at end of file diff --git a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs index f995266b6c..a879b30bd0 100644 --- a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs +++ b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs @@ -17,6 +17,7 @@ using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Interop; +using System.Windows.Media; using System.Windows.Navigation; using ICSharpCode.Core; @@ -653,6 +654,15 @@ namespace ICSharpCode.SharpDevelop.Gui ((AvalonDockLayout)workbenchLayout).WriteState(output); LoggingService.Debug(output.ToString()); } + if (!e.Handled && e.Key == Key.L && e.KeyboardDevice.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Alt)) { + this.UseLayoutRounding = !this.UseLayoutRounding; + } + if (!e.Handled && e.Key == Key.F && e.KeyboardDevice.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Alt)) { + if (TextOptions.GetTextFormattingMode(this) == TextFormattingMode.Display) + TextOptions.SetTextFormattingMode(this, TextFormattingMode.Ideal); + else + TextOptions.SetTextFormattingMode(this, TextFormattingMode.Display); + } } static string GetElementName(object element) diff --git a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.xaml b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.xaml index 1fe311e3c8..167c8be965 100644 --- a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.xaml +++ b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.xaml @@ -7,6 +7,7 @@ Background = "{DynamicResource {x:Static SystemColors.ControlBrushKey}}" AllowDrop = "True" UseLayoutRounding = "True" + TextOptions.TextFormattingMode = "Display" >