fix delete behaviour

This commit is contained in:
Qrakhen 2025-11-21 16:38:24 +01:00
parent 30157f1f5d
commit e2022ef80e
4 changed files with 110 additions and 101 deletions

View File

@ -172,85 +172,84 @@ public static class KeyHelper
Add(Key.NumLock); Add(Key.NumLock);
Add(Key.Scroll); Add(Key.Scroll);
Add(Key.LeftShift); Add(Key.LeftShift);
Add(Key.RightShift); Add(Key.RightShift);
Add(Key.LeftCtrl); Add(Key.LeftCtrl);
Add(Key.RightCtrl); Add(Key.RightCtrl);
Add(Key.LeftAlt); Add(Key.LeftAlt);
Add(Key.RightAlt); Add(Key.RightAlt);
Add(Key.BrowserBack); Add(Key.BrowserBack);
Add(Key.BrowserForward); Add(Key.BrowserForward);
Add(Key.BrowserRefresh); Add(Key.BrowserRefresh);
Add(Key.BrowserStop); Add(Key.BrowserStop);
Add(Key.BrowserSearch); Add(Key.BrowserSearch);
Add(Key.BrowserFavorites); Add(Key.BrowserFavorites);
Add(Key.BrowserHome); Add(Key.BrowserHome);
Add(Key.VolumeMute); Add(Key.VolumeMute);
Add(Key.VolumeDown); Add(Key.VolumeDown);
Add(Key.VolumeUp); Add(Key.VolumeUp);
Add(Key.MediaNextTrack); Add(Key.MediaNextTrack);
Add(Key.MediaPreviousTrack); Add(Key.MediaPreviousTrack);
Add(Key.MediaStop); Add(Key.MediaStop);
Add(Key.MediaPlayPause); Add(Key.MediaPlayPause);
Add(Key.LaunchMail); Add(Key.LaunchMail);
Add(Key.SelectMedia); Add(Key.SelectMedia);
Add(Key.LaunchApplication1); Add(Key.LaunchApplication1);
Add(Key.LaunchApplication2); Add(Key.LaunchApplication2);
Add(Key.Oem1, 'ü', 'Ü'); Add(Key.Oem1, 'ü', 'Ü');
Add(Key.OemSemicolon, ',', ';'); Add(Key.OemSemicolon, ',', ';');
Add(Key.OemPlus, '+', '*', '~'); Add(Key.OemPlus, '+', '*', '~');
Add(Key.OemComma, ',', ';'); Add(Key.OemComma, ',', ';');
Add(Key.OemMinus, '-', '_'); Add(Key.OemMinus, '-', '_');
Add(Key.OemPeriod, '.', ':'); Add(Key.OemPeriod, '.', ':');
Add(Key.Oem2); Add(Key.Oem2);
Add(Key.OemQuestion, '#', '\''); Add(Key.OemQuestion, '#', '\'');
Add(Key.Oem3, 'ö', 'Ö'); Add(Key.Oem3, 'ö', 'Ö');
Add(Key.OemTilde); Add(Key.OemTilde);
Add(Key.AbntC1); Add(Key.AbntC1);
Add(Key.AbntC2); Add(Key.AbntC2);
Add(Key.Oem4); Add(Key.Oem4);
Add(Key.OemOpenBrackets); Add(Key.OemOpenBrackets);
Add(Key.Oem5, '^', '°'); Add(Key.Oem5, '^', '°');
Add(Key.OemPipe); Add(Key.OemPipe);
Add(Key.Oem6, '´', '`'); Add(Key.Oem6, '´', '`');
Add(Key.OemCloseBrackets); Add(Key.OemCloseBrackets);
Add(Key.Oem7, 'ß', '?'); Add(Key.Oem7);
Add(Key.OemQuotes, 'ä', 'Ä'); Add(Key.OemQuotes, 'ä', 'Ä');
Add(Key.Oem8); Add(Key.Oem8);
Add(Key.Oem102); Add(Key.Oem102);
Add(Key.OemBackslash, '<', '>', '|'); Add(Key.OemBackslash, '<', '>', '|');
Add(Key.ImeProcessed); Add(Key.ImeProcessed);
Add(Key.System); Add(Key.System);
Add(Key.DbeAlphanumeric); Add(Key.DbeAlphanumeric);
Add(Key.OemAttn); Add(Key.OemAttn);
Add(Key.DbeKatakana); Add(Key.DbeKatakana);
Add(Key.OemFinish); Add(Key.OemFinish);
Add(Key.DbeHiragana); Add(Key.DbeHiragana);
Add(Key.OemCopy); Add(Key.OemCopy);
Add(Key.DbeSbcsChar); Add(Key.DbeSbcsChar);
Add(Key.OemAuto); Add(Key.OemAuto);
Add(Key.DbeDbcsChar); Add(Key.DbeDbcsChar);
Add(Key.OemEnlw); Add(Key.OemEnlw);
Add(Key.DbeRoman); Add(Key.DbeRoman);
Add(Key.OemBackTab); Add(Key.OemBackTab);
Add(Key.Attn); Add(Key.Attn);
Add(Key.DbeNoRoman); Add(Key.DbeNoRoman);
Add(Key.CrSel); Add(Key.CrSel);
Add(Key.DbeEnterWordRegisterMode); Add(Key.DbeEnterWordRegisterMode);
Add(Key.DbeEnterImeConfigureMode); Add(Key.DbeEnterImeConfigureMode);
Add(Key.ExSel); Add(Key.ExSel);
Add(Key.DbeFlushString); Add(Key.DbeFlushString);
Add(Key.EraseEof); Add(Key.EraseEof);
Add(Key.DbeCodeInput); Add(Key.DbeCodeInput);
Add(Key.Play); Add(Key.Play);
Add(Key.DbeNoCodeInput); Add(Key.DbeNoCodeInput);
Add(Key.Zoom); Add(Key.Zoom);
Add(Key.DbeDetermineString); Add(Key.DbeDetermineString);
Add(Key.NoName); Add(Key.NoName);
Add(Key.DbeEnterDialogConversionMode); Add(Key.DbeEnterDialogConversionMode);
Add(Key.Pa1); Add(Key.Pa1);
Add(Key.OemClear); Add(Key.OemClear);
Add(Key.DeadCharProcessed); Add(Key.DeadCharProcessed);
} }
private static void Add(Key key, params char[] chars) private static void Add(Key key, params char[] chars)

View File

@ -11,20 +11,35 @@
Title="MainWindow" Height="450" Width="800"> Title="MainWindow" Height="450" Width="800">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition Width="5*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="5*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="32" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ListBox Grid.Column="0" <ListBox Grid.Column="0"
ItemsSource="{Binding Lines.Count}" ItemsSource="{Binding Lines.Count}"
IsHitTestVisible="False" IsHitTestVisible="False"
Background="#252525" Foreground="#707070" Background="#242628"
BorderThickness="0" Foreground="#969696"
Padding="0,0,5,0" BorderThickness="0"
VerticalContentAlignment="Top" Padding="0,0,5,0"
HorizontalContentAlignment="Right"/> VerticalContentAlignment="Top"
HorizontalContentAlignment="Right"/>
<controls:EditorFrame Grid.Column="1" />
<controls:EditorFrame Grid.Column="1" />
</Grid>
<Grid Grid.Row="1" Background="#161718">
</Grid>
</Grid>
</Grid> </Grid>
</Window> </Window>

View File

@ -89,21 +89,20 @@ public class EditorFrameViewModel : ObservableObject
CurrentLineBuffer.Slice(0)); CurrentLineBuffer.Slice(0));
Lines.RemoveAt(CursorLine); Lines.RemoveAt(CursorLine);
SetCursor(CursorLine - 1, position); SetCursor(CursorLine - 1, position);
return; } else {
} else
MoveCursor(0, -count); MoveCursor(0, -count);
CurrentLineBuffer.Delete(CursorColumn, count);
}
} else { } else {
if (CursorColumn + count >= CurrentLineBuffer.Tail && if (CursorColumn + count > CurrentLineBuffer.Tail &&
CursorLine < Lines.Count - 1) { CursorLine < Lines.Count - 1) {
CurrentLineBuffer.Insert( CurrentLineBuffer.Insert(
CurrentLineBuffer.Tail, CurrentLineBuffer.Tail,
Lines[CursorLine + 1].Slice(0)); Lines[CursorLine + 1].Slice(0));
Lines.RemoveAt(CursorLine + 1); Lines.RemoveAt(CursorLine + 1);
return;
} }
CurrentLineBuffer.Delete(CursorColumn, count);
} }
CurrentLineBuffer.Delete(CursorColumn, count);
} }
/* /*

View File

@ -82,11 +82,7 @@ public abstract class TailBuffer<T> : ICloneable
} }
} }
/// <summary> protected virtual void SetTail(int tail)
/// Sets the tail, or, if omitted, seeks the tail by finding the first null terminator.
/// </summary>
/// <param name="tail"></param>
protected virtual void SetTail(int tail = -1)
{ {
Tail = tail; Tail = tail;
} }