From 34daecaa25e5bdd995179a2b4b9d922f8bbb3b54 Mon Sep 17 00:00:00 2001 From: cirakg Date: Mon, 26 Oct 2026 15:20:20 +0100 Subject: fix(pin): START never submits on touch; Change PIN asks once after a legacy PIN A legacy PIN (0.8.0 or earlier) on a touch screen was still submitted by START, and a tap that also arrives as START could submit the digits typed so far as a counted wrong PIN. The OK key is tapped instead. "Change PIN" while locked with a legacy PIN asked for the new PIN twice: the forced new PIN after the unlock is now the change. Found in the review of b8addc8 and 096b5a4. make test and make screenshots pass on the Forerunner 70. Co-Authored-By: Claude Opus 5.5 --- source/ui/MainMenu.mc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'source/ui/MainMenu.mc') diff --git a/source/ui/MainMenu.mc b/source/ui/MainMenu.mc index db59f4a..21f427c 100644 --- a/source/ui/MainMenu.mc +++ b/source/ui/MainMenu.mc @@ -118,8 +118,10 @@ class MainMenuDelegate extends WatchUi.Menu2InputDelegate { } else if (vault.session.isUnlocked()) { WatchUi.switchToView(new PinView(PinView.MODE_CHANGE, null), new PinDelegate(), WatchUi.SLIDE_LEFT); } else { - var then = new ChangePinAfterUnlock(); - WatchUi.switchToView(new PinView(PinView.MODE_UNLOCK, then.method(:run)), new PinDelegate(), WatchUi.SLIDE_LEFT); + // A legacy PIN is followed by the forced new-PIN screen, which + // is already the change: no second one after it. + var then = vault.isLegacyPin() ? null : new ChangePinAfterUnlock().method(:run); + WatchUi.switchToView(new PinView(PinView.MODE_UNLOCK, then), new PinDelegate(), WatchUi.SLIDE_LEFT); } } else if (id == :reset) { // Two short lines (the item said "Reset PIN"): the native dialog shows -- cgit v1.2.3