Dialpad asterisk "*" button state bug [released]
In the Phone app, when entering a phone number manually to call using the dialpad, the asterisk * button of the dialpad also supports typing the + and p symbols. The + and p symbols are achieved by pressing the * button repeatedly frequently enough (faster than ~800ms, it seems).
Now it seems the state tracking of the * button breaks after having typed a + or a p if you press another button (e.g. a number) within the same 800ms time window after typing + or p. In this case the * button state does not reset back to start from * again - instead it continues with the last symbol typed with the * button.
To clarify, here's an example. With the dialpad open, press the following button sequence in a quick fashion (must be less than 800ms between each button press):
**7**7**7
Expected resulting phone number:
+7+7+7
Actual resulting phone number:
+7p7*7
This example sequence does not represent a typical usage scenario, rather it presents the problem using an easy-to-reproduce procedure. The real-world problem arises from the fact that the broken state is not reset when closing the dialpad, and not even when closing the whole phone app. Calling almost exclusively international phone numbers, I need to prefix almost all phone numbers with a + sign. So when I make several international calls in succession using the dialpad, I routinely start by hitting ** to get a + followed by the numbers of the phone number - fast enough that the time between the last * and the first number is less than 800ms. And then, because of the bug, when I try to call the second number, hitting * twice produces p instead of +, and I have to start erasing to fix the "typo".
The awkward workaround is to wait 800ms after typing every + or p symbol, after which the state is correctly reset. Or alternatively memorize the dialpad's internal state in your brain and press * only once to repeat the previously typed symbol :D
While reverse-engineering this bug, I noticed that the following sequence reveals a different anomaly related to the * button state (again, press buttons at less than 800ms intervals):
**<backspace>******
Expected output:
p
Actual output:
+*p+*p
And another sequence:
7*<backspace>*
Expected output:
7*
Actual output:
*
I have not bumped into these latter sequences during regular use, but though I'd share them anyway.
I can not reproduce this bug on 1.1.7.24
tvicol ( 2015-07-16 12:55:24 +0200 )editIt's there for me on 1.1.7.24.
Giacomo Di Giacomo ( 2015-07-16 13:37:02 +0200 )editYeah, if you are fast enough you can reproduce it.
You can find in the Multitap.qml file that it waits for 1000 ms to restart the timer (or to reset the state). Seems there should be an additional condition for timer restart on pressing any other keys.
AliN ( 2015-07-16 13:55:49 +0200 )editI inserted the very same bug years ago when coding a similar keyboard application. :-D
Giacomo Di Giacomo ( 2015-07-16 16:59:07 +0200 )editFixed in 2.0.1.7 EA. Once released we can close this.
From the changelog:
AliN ( 2016-01-20 14:57:17 +0200 )edit