From db0f432b1c5f5616d785503213b1a6f39052c335 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 18 Aug 2021 06:24:27 +1000 Subject: [PATCH] chore(developer): debug deadkey 1-based values --- windows/src/developer/TIKE/child/UfrmDebug.pas | 4 ++-- windows/src/developer/TIKE/debug/RegressionTest.pas | 4 ++-- windows/src/developer/TIKE/debug/debugdeadkeys.pas | 2 +- windows/src/developer/TIKE/debug/debugkeyboard.pas | 5 ++++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/windows/src/developer/TIKE/child/UfrmDebug.pas b/windows/src/developer/TIKE/child/UfrmDebug.pas index 1437bbffde..acde018b77 100644 --- a/windows/src/developer/TIKE/child/UfrmDebug.pas +++ b/windows/src/developer/TIKE/child/UfrmDebug.pas @@ -421,7 +421,7 @@ begin context_items[n]._type := KM_KBP_CT_MARKER; dk := FDeadkeys.GetFromPosition(i-1); Assert(Assigned(dk)); - context_items[n].marker := dk.Deadkey.Value+1; // TODO: remove +1 -1 messes for deadkey codes //GetDeadkeyMarker(i); + context_items[n].marker := dk.Deadkey.Value; end else begin @@ -784,7 +784,7 @@ procedure TfrmDebug.ExecuteEventAction(n: Integer); dk.Memo := memo; dk.Deadkey := nil; for i := 0 to debugkeyboard.Deadkeys.Count - 1 do - if debugkeyboard.Deadkeys[i].Value+1 = dkCode then + if debugkeyboard.Deadkeys[i].Value = dkCode then begin dk.Deadkey := debugkeyboard.Deadkeys[i]; Break; diff --git a/windows/src/developer/TIKE/debug/RegressionTest.pas b/windows/src/developer/TIKE/debug/RegressionTest.pas index 09227b5daf..1bbb41fc83 100644 --- a/windows/src/developer/TIKE/debug/RegressionTest.pas +++ b/windows/src/developer/TIKE/debug/RegressionTest.pas @@ -255,7 +255,7 @@ begin for i := 0 to DebugKeyboard.Deadkeys.Count - 1 do if DebugKeyboard.Deadkeys[i].name = name then begin - Result := DebugKeyboard.Deadkeys[i].Value+1; + Result := DebugKeyboard.Deadkeys[i].Value; Exit; end; end; @@ -445,7 +445,7 @@ var i: Integer; begin for i := 0 to FRegressionTest.DebugKeyboard.Deadkeys.Count - 1 do - if FRegressionTest.DebugKeyboard.Deadkeys[i].Value+1 = dkCode then + if FRegressionTest.DebugKeyboard.Deadkeys[i].Value = dkCode then begin Result := FRegressionTest.DebugKeyboard.Deadkeys[i].Name; Exit; diff --git a/windows/src/developer/TIKE/debug/debugdeadkeys.pas b/windows/src/developer/TIKE/debug/debugdeadkeys.pas index 7cef55bdb3..33592089e5 100644 --- a/windows/src/developer/TIKE/debug/debugdeadkeys.pas +++ b/windows/src/developer/TIKE/debug/debugdeadkeys.pas @@ -87,7 +87,7 @@ begin if dk.Position = startpos then begin s[i] := WChr(UC_SENTINEL); - s := Copy(s, 1, i) + WChr(CODE_DEADKEY) + WChr(dk.Deadkey.Value+1) + Copy(s, i+1, Length(s)); + s := Copy(s, 1, i) + WChr(CODE_DEADKEY) + WChr(dk.Deadkey.Value) + Copy(s, i+1, Length(s)); Inc(i, 2); Break; end; diff --git a/windows/src/developer/TIKE/debug/debugkeyboard.pas b/windows/src/developer/TIKE/debug/debugkeyboard.pas index 17ce50567e..a60dc6fdf5 100644 --- a/windows/src/developer/TIKE/debug/debugkeyboard.pas +++ b/windows/src/developer/TIKE/debug/debugkeyboard.pas @@ -218,7 +218,10 @@ begin dk := TDebugDeadKey.Create; DeadKeys.Add(dk); n := Pos(' ', s); if n = 0 then n := Length(s)+1; - dk.Value := StrToIntDef(Copy(s,1,n-1), -1); + // The deadkey value stored in the debug data is zero-based but + // we need to work with a 1-based value (0 conflates with + // end-of-string in extended strings) + dk.Value := StrToIntDef(Copy(s,1,n-1), -2) + 1; dk.Name := Copy(s,n+1, 128); end else