From ae2947087bfb084e8488bdf2d81116fbc8ef2b3a Mon Sep 17 00:00:00 2001 From: Benjamin Popp Date: Fri, 27 Mar 2020 10:31:06 -0500 Subject: [PATCH] Clip leading 0x off gotos --- src/HexManiac.Core/ViewModels/Selection.cs | 1 + src/HexManiac.Tests/NavigationTests.cs | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/HexManiac.Core/ViewModels/Selection.cs b/src/HexManiac.Core/ViewModels/Selection.cs index 08c302c2..0960c02c 100644 --- a/src/HexManiac.Core/ViewModels/Selection.cs +++ b/src/HexManiac.Core/ViewModels/Selection.cs @@ -136,6 +136,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels { var address = args.ToString().Trim(); if (address.StartsWith(PointerRun.PointerStart.ToString())) address = address.Substring(1); if (address.EndsWith(PointerRun.PointerEnd.ToString())) address = address.Substring(0, address.Length - 1); + if (address.StartsWith("0x")) address = address.Substring(2); var anchor = this.model.GetAddressFromAnchor(new ModelDelta(), -1, address); using (ModelCacheScope.CreateScope(this.model)) { if (anchor != Pointer.NULL) { diff --git a/src/HexManiac.Tests/NavigationTests.cs b/src/HexManiac.Tests/NavigationTests.cs index 1fd0f1e2..72abb435 100644 --- a/src/HexManiac.Tests/NavigationTests.cs +++ b/src/HexManiac.Tests/NavigationTests.cs @@ -361,6 +361,17 @@ namespace HavenSoft.HexManiac.Tests { Assert.Contains("| 4 bytes selected", test.ViewPort.SelectedAddress); } + [Fact] + public void CanPrefixAddressWith0xDuringGoto() { + var editor = new EditorViewModel(new StubFileSystem()); + var test = new BaseViewModelTestClass(); + editor.Add(test.ViewPort); + + editor.GotoViewModel.Goto.Execute("0x0030"); + + Assert.Equal(0x30, test.ViewPort.DataOffset); + } + private void StandardSetup(out byte[] data, out PokemonModel model, out ViewPort viewPort) { data = Enumerable.Repeat((byte)0xFF, 0x200).ToArray(); model = new PokemonModel(data);