Browse Source

Overstrike mode - with options

pull/289/head
Patryk Mikos 12 years ago
parent
commit
142dccb1bf
  1. 3
      data/resources/StringResources.resx
  2. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/GeneralEditorOptions.xaml
  3. 20
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextArea.cs
  4. 16
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/TextEditorOptions.cs

3
data/resources/StringResources.resx

@ -2400,6 +2400,9 @@ system. I don't think that it needs translation.</comment> @@ -2400,6 +2400,9 @@ system. I don't think that it needs translation.</comment>
<data name="Dialog.Options.IDEOptions.TextEditor.General.HideCursorWhileTypingCheckBoxCheckBox" xml:space="preserve">
<value>Hide cursor while typing</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.General.UseOverstrikeModeCheckBox" xml:space="preserve">
<value>Use overstrike mode</value>
</data>
<data name="Dialog.Options.IDEOptions.TextEditor.General.ShowQuickClassBrowserCheckBox" xml:space="preserve">
<value>Show &amp;Quick ClassBrowser Panel</value>
</data>

3
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/GeneralEditorOptions.xaml

@ -27,6 +27,9 @@ @@ -27,6 +27,9 @@
<CheckBox
IsChecked="{core:OptionBinding local:CodeEditorOptions.ShowHiddenDefinitions}"
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.ShowHiddenDefinitionsCheckBox}" />
<CheckBox
IsChecked="{core:OptionBinding local:CodeEditorOptions.UseOverstrikeMode}"
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.General.UseOverstrikeModeCheckBox}" />
</widgets:StackPanelWithSpacing>
</GroupBox>
</StackPanel>

20
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/TextArea.cs

@ -866,8 +866,11 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -866,8 +866,11 @@ namespace ICSharpCode.AvalonEdit.Editing
if (!e.Handled) {
if (e.Text == "\n" || e.Text == "\r" || e.Text == "\r\n")
ReplaceSelectionWithNewLine();
else
else {
if (overstrikeMode && Selection.IsEmpty && Document.GetLineByNumber(Caret.Line).EndOffset > Caret.Offset)
Selection = Selection.Create(this, Caret.Offset, Caret.Offset+e.Text.Length);
ReplaceSelectionWithText(e.Text);
}
OnTextEntered(e);
caret.BringCaretToView();
}
@ -952,6 +955,15 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -952,6 +955,15 @@ namespace ICSharpCode.AvalonEdit.Editing
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
base.OnPreviewKeyDown(e);
if (!this.Options.UseOverstrikeMode) {
this.overstrikeMode = false;
} else if (!e.Handled && e.Key == Key.Insert) {
this.overstrikeMode = !this.overstrikeMode;
e.Handled = true;
return;
}
HideMouseCursor();
foreach (TextAreaStackedInputHandler h in stackedInputHandlers) {
if (e.Handled)
@ -1017,6 +1029,12 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -1017,6 +1029,12 @@ namespace ICSharpCode.AvalonEdit.Editing
#endregion
#region Overstrike mode
bool overstrikeMode = false;
#endregion
/// <inheritdoc/>
protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
{

16
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/TextEditorOptions.cs

@ -462,5 +462,21 @@ namespace ICSharpCode.AvalonEdit @@ -462,5 +462,21 @@ namespace ICSharpCode.AvalonEdit
}
}
}
bool useOverstrikeMode = false;
[DefaultValue(false)]
/// <summary>
/// Gets/Sets if overstrike mode is enabled to use
/// </summary>
public bool UseOverstrikeMode {
get { return useOverstrikeMode; }
set {
if (useOverstrikeMode != value) {
useOverstrikeMode = value;
OnPropertyChanged("UseOverstrikeMode");
}
}
}
}
}

Loading…
Cancel
Save