Keyboard.Key#onReleased() should handle inside parameter.
The boolean parameter of Keyboard.Key#onReleased(boolean) has been somehow ignored since Capcake. With this CL, that method starts working as documented. Alternatively we could fix the issue when and only when the application's targetSdkVersion >= 23. We didn't do that because: - Although Keyboard.Key class is a public API, it is supposed to be used almost only by android.inputmethodservice.KeyboardView. The risk of unwanted compatibility problems is low. - Fixing that is beneficial for users because it actually fixes UX issue when applications/IMEs that still rely on KeyboardView run in Android M. - All the fields that are related to Keyboard.Key#onReleased are public fields so developers can easily work around anyway. Bug: 21446448 Change-Id: I392166c77cd9dd2c432dc4f1274312f8355de02b
This commit is contained in:
@@ -400,16 +400,26 @@ public class Keyboard {
|
||||
public void onPressed() {
|
||||
pressed = !pressed;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Changes the pressed state of the key. If it is a sticky key, it will also change the
|
||||
* toggled state of the key if the finger was release inside.
|
||||
* @param inside whether the finger was released inside the key
|
||||
* Changes the pressed state of the key.
|
||||
*
|
||||
* <p>Toggled state of the key will be flipped when all the following conditions are
|
||||
* fulfilled:</p>
|
||||
*
|
||||
* <ul>
|
||||
* <li>This is a sticky key, that is, {@link #sticky} is {@code true}.
|
||||
* <li>The parameter {@code inside} is {@code true}.
|
||||
* <li>{@link Build.VERSION.SDK_INT} is greater than {@link VERSION_CODES.LOLLIPOP_MR1}.
|
||||
* </ul>
|
||||
*
|
||||
* @param inside whether the finger was released inside the key. Works only on Android M and
|
||||
* later. See the method document for details.
|
||||
* @see #onPressed()
|
||||
*/
|
||||
public void onReleased(boolean inside) {
|
||||
pressed = !pressed;
|
||||
if (sticky) {
|
||||
if (sticky && inside) {
|
||||
on = !on;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user