Fix ghost popup mini keyboard
Bug: 3257700 Change-Id: I522ceb426b825575c90e8445336191bcf889f05dmain
parent
ca7c1b56aa
commit
292faee8ba
|
@ -202,11 +202,19 @@ public class Key {
|
||||||
this.mX = x + mGap / 2;
|
this.mX = x + mGap / 2;
|
||||||
this.mY = y;
|
this.mY = y;
|
||||||
|
|
||||||
int[] codes = style.getIntArray(a, R.styleable.Keyboard_Key_codes);
|
|
||||||
mPreviewIcon = style.getDrawable(a, R.styleable.Keyboard_Key_iconPreview);
|
mPreviewIcon = style.getDrawable(a, R.styleable.Keyboard_Key_iconPreview);
|
||||||
Keyboard.setDefaultBounds(mPreviewIcon);
|
Keyboard.setDefaultBounds(mPreviewIcon);
|
||||||
mPopupCharacters = style.getText(a, R.styleable.Keyboard_Key_popupCharacters);
|
final CharSequence popupCharacters = style.getText(a,
|
||||||
mPopupResId = style.getResourceId(a, R.styleable.Keyboard_Key_popupKeyboard, 0);
|
R.styleable.Keyboard_Key_popupCharacters);
|
||||||
|
final int popupResId = style.getResourceId(a, R.styleable.Keyboard_Key_popupKeyboard, 0);
|
||||||
|
// Set popup keyboard resource and characters only when both are specified.
|
||||||
|
if (popupResId != 0 && !TextUtils.isEmpty(popupCharacters)) {
|
||||||
|
mPopupResId = popupResId;
|
||||||
|
mPopupCharacters = popupCharacters;
|
||||||
|
} else {
|
||||||
|
mPopupResId = 0;
|
||||||
|
mPopupCharacters = null;
|
||||||
|
}
|
||||||
mRepeatable = style.getBoolean(a, R.styleable.Keyboard_Key_isRepeatable, false);
|
mRepeatable = style.getBoolean(a, R.styleable.Keyboard_Key_isRepeatable, false);
|
||||||
mModifier = style.getBoolean(a, R.styleable.Keyboard_Key_isModifier, false);
|
mModifier = style.getBoolean(a, R.styleable.Keyboard_Key_isModifier, false);
|
||||||
mSticky = style.getBoolean(a, R.styleable.Keyboard_Key_isSticky, false);
|
mSticky = style.getBoolean(a, R.styleable.Keyboard_Key_isSticky, false);
|
||||||
|
@ -226,16 +234,20 @@ public class Key {
|
||||||
mManualTemporaryUpperCaseCode = style.getInt(a,
|
mManualTemporaryUpperCaseCode = style.getInt(a,
|
||||||
R.styleable.Keyboard_Key_manualTemporaryUpperCaseCode, 0);
|
R.styleable.Keyboard_Key_manualTemporaryUpperCaseCode, 0);
|
||||||
mOutputText = style.getText(a, R.styleable.Keyboard_Key_keyOutputText);
|
mOutputText = style.getText(a, R.styleable.Keyboard_Key_keyOutputText);
|
||||||
|
// Choose the first letter of the label as primary code if not specified.
|
||||||
|
final int[] codes = style.getIntArray(a, R.styleable.Keyboard_Key_codes);
|
||||||
|
if (codes == null && !TextUtils.isEmpty(mLabel)) {
|
||||||
|
mCodes = new int[] { mLabel.charAt(0) };
|
||||||
|
} else {
|
||||||
|
mCodes = codes;
|
||||||
|
}
|
||||||
|
|
||||||
final Drawable shiftedIcon = style.getDrawable(a,
|
final Drawable shiftedIcon = style.getDrawable(a,
|
||||||
R.styleable.Keyboard_Key_shiftedIcon);
|
R.styleable.Keyboard_Key_shiftedIcon);
|
||||||
a.recycle();
|
|
||||||
|
|
||||||
if (shiftedIcon != null)
|
if (shiftedIcon != null)
|
||||||
mKeyboard.getShiftedIcons().put(this, shiftedIcon);
|
mKeyboard.getShiftedIcons().put(this, shiftedIcon);
|
||||||
|
|
||||||
if (codes == null && !TextUtils.isEmpty(mLabel))
|
a.recycle();
|
||||||
codes = new int[] { mLabel.charAt(0) };
|
|
||||||
mCodes = codes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Drawable getIcon() {
|
public Drawable getIcon() {
|
||||||
|
|
|
@ -1187,9 +1187,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
|
||||||
* method on the base class if the subclass doesn't wish to handle the call.
|
* method on the base class if the subclass doesn't wish to handle the call.
|
||||||
*/
|
*/
|
||||||
protected boolean onLongPress(Key popupKey) {
|
protected boolean onLongPress(Key popupKey) {
|
||||||
// TODO if popupKey.popupCharacters has only one letter, send it as key without opening
|
|
||||||
// mini keyboard.
|
|
||||||
|
|
||||||
if (popupKey.mPopupResId == 0)
|
if (popupKey.mPopupResId == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue