mirror of
https://github.com/haven1433/HexManiacAdvance.git
synced 2026-10-01 20:56:36 -05:00
handle backspace during string
This commit is contained in:
@@ -305,7 +305,12 @@ namespace HavenSoft.Gen3Hex.Core.ViewModels {
|
||||
}
|
||||
|
||||
var run = Model.GetNextRun(index - 1) ?? new NoInfoRun(int.MaxValue);
|
||||
if (run.Start <= index - 1 && run.Start + run.Length > index - 1) {
|
||||
if (run is PCSRun pcs) {
|
||||
for (int i = index - 1; i < run.Start + run.Length; i++) Model[i] = 0xFF;
|
||||
var length = PCSString.ReadString(Model, run.Start);
|
||||
Model.ObserveRunWritten(new PCSRun(run.Start, length, run.PointerSources));
|
||||
RefreshBackingData();
|
||||
} else if (run.Start <= index - 1 && run.Start + run.Length > index - 1) {
|
||||
// I want to do a backspace at the end of this run
|
||||
SelectionStart = scroll.DataIndexToViewPoint(run.Start);
|
||||
var cellToText = new ConvertCellToText(Model, run.Start);
|
||||
|
||||
@@ -186,7 +186,21 @@ namespace HavenSoft.Gen3Hex.Tests {
|
||||
Assert.Equal(string.Empty, ((Anchor)viewPort[0, 0].Format).Format);
|
||||
}
|
||||
|
||||
// test: backspace
|
||||
[Fact]
|
||||
public void UsingBackspaceMidStringMakesTheStringEndThere() {
|
||||
var buffer = Enumerable.Repeat((byte)0xFF, 0x200).ToArray();
|
||||
for (int i = 0; i < 0x10; i++) buffer[i] = 0x00;
|
||||
var model = new PointerAndStringModel(buffer);
|
||||
var viewPort = new ViewPort(new LoadedFile("test.txt", buffer), model) { Width = 0x10, Height = 0x10 };
|
||||
|
||||
// add an anchor with some data on the 2nd line
|
||||
viewPort.SelectionStart = new Point(0, 1);
|
||||
viewPort.Edit("^bob\"\" \"Hello World!\"");
|
||||
viewPort.SelectionStart = new Point(6, 1);
|
||||
viewPort.Edit(ConsoleKey.Backspace);
|
||||
|
||||
Assert.Equal("Hello\"", ((PCSString.Convert(model, 0x10, PCSString.ReadString(model, 0x10)))));
|
||||
}
|
||||
|
||||
// TODO escape sequences
|
||||
|
||||
|
||||
Reference in New Issue
Block a user