From e2022ef80e33aa53fe5893f9662eaa353747835a Mon Sep 17 00:00:00 2001 From: Qrakhen Date: Fri, 21 Nov 2025 16:38:24 +0100 Subject: [PATCH] fix delete behaviour --- Qrakhen.Qamp.Editor/InputService.cs | 157 +++++++++--------- Qrakhen.Qamp.Editor/MainWindow.xaml | 37 +++-- .../ViewModel/EditorFrameViewModel.cs | 11 +- Qrakhen.Qamp.Memory/TailBuffer.cs | 6 +- 4 files changed, 110 insertions(+), 101 deletions(-) diff --git a/Qrakhen.Qamp.Editor/InputService.cs b/Qrakhen.Qamp.Editor/InputService.cs index baed6ad..465da83 100644 --- a/Qrakhen.Qamp.Editor/InputService.cs +++ b/Qrakhen.Qamp.Editor/InputService.cs @@ -172,85 +172,84 @@ public static class KeyHelper Add(Key.NumLock); Add(Key.Scroll); Add(Key.LeftShift); - Add(Key.RightShift); - Add(Key.LeftCtrl); - Add(Key.RightCtrl); - Add(Key.LeftAlt); - Add(Key.RightAlt); - Add(Key.BrowserBack); - Add(Key.BrowserForward); - Add(Key.BrowserRefresh); - Add(Key.BrowserStop); - Add(Key.BrowserSearch); - Add(Key.BrowserFavorites); - Add(Key.BrowserHome); - Add(Key.VolumeMute); - Add(Key.VolumeDown); - Add(Key.VolumeUp); - Add(Key.MediaNextTrack); - Add(Key.MediaPreviousTrack); - Add(Key.MediaStop); - Add(Key.MediaPlayPause); - Add(Key.LaunchMail); - Add(Key.SelectMedia); - Add(Key.LaunchApplication1); - Add(Key.LaunchApplication2); - Add(Key.Oem1, 'ü', 'Ü'); - Add(Key.OemSemicolon, ',', ';'); - Add(Key.OemPlus, '+', '*', '~'); - Add(Key.OemComma, ',', ';'); - Add(Key.OemMinus, '-', '_'); - Add(Key.OemPeriod, '.', ':'); - Add(Key.Oem2); - Add(Key.OemQuestion, '#', '\''); - Add(Key.Oem3, 'ö', 'Ö'); - Add(Key.OemTilde); - Add(Key.AbntC1); - Add(Key.AbntC2); - Add(Key.Oem4); - Add(Key.OemOpenBrackets); - Add(Key.Oem5, '^', '°'); - Add(Key.OemPipe); - Add(Key.Oem6, '´', '`'); - Add(Key.OemCloseBrackets); - Add(Key.Oem7, 'ß', '?'); - Add(Key.OemQuotes, 'ä', 'Ä'); - Add(Key.Oem8); - Add(Key.Oem102); - Add(Key.OemBackslash, '<', '>', '|'); - Add(Key.ImeProcessed); - Add(Key.System); - Add(Key.DbeAlphanumeric); - Add(Key.OemAttn); - Add(Key.DbeKatakana); - Add(Key.OemFinish); - Add(Key.DbeHiragana); - Add(Key.OemCopy); - Add(Key.DbeSbcsChar); - Add(Key.OemAuto); - Add(Key.DbeDbcsChar); - Add(Key.OemEnlw); - Add(Key.DbeRoman); - Add(Key.OemBackTab); - Add(Key.Attn); - Add(Key.DbeNoRoman); - Add(Key.CrSel); - Add(Key.DbeEnterWordRegisterMode); - Add(Key.DbeEnterImeConfigureMode); - Add(Key.ExSel); - Add(Key.DbeFlushString); - Add(Key.EraseEof); - Add(Key.DbeCodeInput); - Add(Key.Play); - Add(Key.DbeNoCodeInput); - Add(Key.Zoom); - Add(Key.DbeDetermineString); - Add(Key.NoName); - Add(Key.DbeEnterDialogConversionMode); - Add(Key.Pa1); - Add(Key.OemClear); - Add(Key.DeadCharProcessed); - + Add(Key.RightShift); + Add(Key.LeftCtrl); + Add(Key.RightCtrl); + Add(Key.LeftAlt); + Add(Key.RightAlt); + Add(Key.BrowserBack); + Add(Key.BrowserForward); + Add(Key.BrowserRefresh); + Add(Key.BrowserStop); + Add(Key.BrowserSearch); + Add(Key.BrowserFavorites); + Add(Key.BrowserHome); + Add(Key.VolumeMute); + Add(Key.VolumeDown); + Add(Key.VolumeUp); + Add(Key.MediaNextTrack); + Add(Key.MediaPreviousTrack); + Add(Key.MediaStop); + Add(Key.MediaPlayPause); + Add(Key.LaunchMail); + Add(Key.SelectMedia); + Add(Key.LaunchApplication1); + Add(Key.LaunchApplication2); + Add(Key.Oem1, 'ü', 'Ü'); + Add(Key.OemSemicolon, ',', ';'); + Add(Key.OemPlus, '+', '*', '~'); + Add(Key.OemComma, ',', ';'); + Add(Key.OemMinus, '-', '_'); + Add(Key.OemPeriod, '.', ':'); + Add(Key.Oem2); + Add(Key.OemQuestion, '#', '\''); + Add(Key.Oem3, 'ö', 'Ö'); + Add(Key.OemTilde); + Add(Key.AbntC1); + Add(Key.AbntC2); + Add(Key.Oem4); + Add(Key.OemOpenBrackets); + Add(Key.Oem5, '^', '°'); + Add(Key.OemPipe); + Add(Key.Oem6, '´', '`'); + Add(Key.OemCloseBrackets); + Add(Key.Oem7); + Add(Key.OemQuotes, 'ä', 'Ä'); + Add(Key.Oem8); + Add(Key.Oem102); + Add(Key.OemBackslash, '<', '>', '|'); + Add(Key.ImeProcessed); + Add(Key.System); + Add(Key.DbeAlphanumeric); + Add(Key.OemAttn); + Add(Key.DbeKatakana); + Add(Key.OemFinish); + Add(Key.DbeHiragana); + Add(Key.OemCopy); + Add(Key.DbeSbcsChar); + Add(Key.OemAuto); + Add(Key.DbeDbcsChar); + Add(Key.OemEnlw); + Add(Key.DbeRoman); + Add(Key.OemBackTab); + Add(Key.Attn); + Add(Key.DbeNoRoman); + Add(Key.CrSel); + Add(Key.DbeEnterWordRegisterMode); + Add(Key.DbeEnterImeConfigureMode); + Add(Key.ExSel); + Add(Key.DbeFlushString); + Add(Key.EraseEof); + Add(Key.DbeCodeInput); + Add(Key.Play); + Add(Key.DbeNoCodeInput); + Add(Key.Zoom); + Add(Key.DbeDetermineString); + Add(Key.NoName); + Add(Key.DbeEnterDialogConversionMode); + Add(Key.Pa1); + Add(Key.OemClear); + Add(Key.DeadCharProcessed); } private static void Add(Key key, params char[] chars) diff --git a/Qrakhen.Qamp.Editor/MainWindow.xaml b/Qrakhen.Qamp.Editor/MainWindow.xaml index 87cee02..365ea39 100644 --- a/Qrakhen.Qamp.Editor/MainWindow.xaml +++ b/Qrakhen.Qamp.Editor/MainWindow.xaml @@ -11,20 +11,35 @@ Title="MainWindow" Height="450" Width="800"> - + + + + + + + + + + + - - - + + + + + + + diff --git a/Qrakhen.Qamp.Editor/ViewModel/EditorFrameViewModel.cs b/Qrakhen.Qamp.Editor/ViewModel/EditorFrameViewModel.cs index 040e210..3b3bef5 100644 --- a/Qrakhen.Qamp.Editor/ViewModel/EditorFrameViewModel.cs +++ b/Qrakhen.Qamp.Editor/ViewModel/EditorFrameViewModel.cs @@ -89,21 +89,20 @@ public class EditorFrameViewModel : ObservableObject CurrentLineBuffer.Slice(0)); Lines.RemoveAt(CursorLine); SetCursor(CursorLine - 1, position); - return; - } else + } else { MoveCursor(0, -count); + CurrentLineBuffer.Delete(CursorColumn, count); + } } else { - if (CursorColumn + count >= CurrentLineBuffer.Tail && + if (CursorColumn + count > CurrentLineBuffer.Tail && CursorLine < Lines.Count - 1) { CurrentLineBuffer.Insert( CurrentLineBuffer.Tail, Lines[CursorLine + 1].Slice(0)); Lines.RemoveAt(CursorLine + 1); - return; } + CurrentLineBuffer.Delete(CursorColumn, count); } - - CurrentLineBuffer.Delete(CursorColumn, count); } /* diff --git a/Qrakhen.Qamp.Memory/TailBuffer.cs b/Qrakhen.Qamp.Memory/TailBuffer.cs index 1529cf0..875edfb 100644 --- a/Qrakhen.Qamp.Memory/TailBuffer.cs +++ b/Qrakhen.Qamp.Memory/TailBuffer.cs @@ -82,11 +82,7 @@ public abstract class TailBuffer : ICloneable } } - /// - /// Sets the tail, or, if omitted, seeks the tail by finding the first null terminator. - /// - /// - protected virtual void SetTail(int tail = -1) + protected virtual void SetTail(int tail) { Tail = tail; }