Loading java/src/com/android/inputmethod/keyboard/Key.java +9 −6 Original line number Diff line number Diff line Loading @@ -243,14 +243,13 @@ public class Key { * parser. * @param res resources associated with the caller's context * @param params the keyboard building parameters. * @param row the row that this key belongs to. * @param x the x coordinate of the top-left * @param y the y coordinate of the top-left * @param row the row that this key belongs to. row's x-coordinate will be the right edge of * this key. * @param parser the XML parser containing the attributes for this key * @param keyStyles active key styles set */ public Key(Resources res, KeyboardParams params, Row row, int x, int y, XmlResourceParser parser, KeyStyles keyStyles) { public Key(Resources res, KeyboardParams params, Row row, XmlResourceParser parser, KeyStyles keyStyles) { final TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); Loading Loading @@ -284,6 +283,7 @@ public class Key { } final int keyboardWidth = params.mOccupiedWidth; final int x = row.mCurrentX; int keyXPos = KeyboardBuilder.getDimensionOrFraction(keyAttr, R.styleable.Keyboard_Key_keyXPos, keyboardWidth, x); if (keyXPos < 0) { Loading @@ -309,9 +309,12 @@ public class Key { // Horizontal gap is divided equally to both sides of the key. mX = keyXPos + mHorizontalGap / 2; mY = y; mY = row.mCurrentY; mWidth = keyWidth - mHorizontalGap; // Update row to have x-coordinate of the right edge of this key. row.mCurrentX = keyXPos + keyWidth; final CharSequence[] moreKeys = style.getTextArray( keyAttr, R.styleable.Keyboard_Key_moreKeys); // In Arabic symbol layouts, we'd like to keep digits in more keys regardless of Loading java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java +11 −13 Original line number Diff line number Diff line Loading @@ -128,7 +128,6 @@ public class KeyboardBuilder<KP extends KeyboardParams> { protected final Resources mResources; private final DisplayMetrics mDisplayMetrics; private int mCurrentX = 0; private int mCurrentY = 0; private Row mCurrentRow = null; private boolean mLeftEdge; Loading Loading @@ -314,7 +313,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> { throw new IllegalAttribute(parser, "horizontalGap"); if (a.hasValue(R.styleable.Keyboard_verticalGap)) throw new IllegalAttribute(parser, "verticalGap"); return new Row(mResources, mParams, parser); return new Row(mResources, mParams, parser, mCurrentY); } finally { a.recycle(); } Loading Loading @@ -344,7 +343,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> { if (TAG_ROW.equals(tag)) { if (DEBUG) Log.d(TAG, String.format("</%s>", TAG_ROW)); if (!skip) endRow(); endRow(row); break; } else if (TAG_CASE.equals(tag) || TAG_DEFAULT.equals(tag) || TAG_MERGE.equals(tag)) { Loading @@ -364,7 +363,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> { if (skip) { checkEndTag(TAG_KEY, parser); } else { Key key = new Key(mResources, mParams, row, mCurrentX, mCurrentY, parser, mKeyStyles); Key key = new Key(mResources, mParams, row, parser, mKeyStyles); if (DEBUG) Log.d(TAG, String.format("<%s%s keyLabel=%s code=%d moreKeys=%s />", TAG_KEY, (key.isEnabled() ? "" : " disabled"), key.mLabel, key.mCode, Arrays.toString(key.mMoreKeys))); Loading Loading @@ -392,14 +391,14 @@ public class KeyboardBuilder<KP extends KeyboardParams> { final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard_Key); int keyXPos = KeyboardBuilder.getDimensionOrFraction(keyAttr, R.styleable.Keyboard_Key_keyXPos, keyboardWidth, mCurrentX); R.styleable.Keyboard_Key_keyXPos, keyboardWidth, row.mCurrentX); if (keyXPos < 0) { // If keyXPos is negative, the actual x-coordinate will be display_width + keyXPos. keyXPos += keyboardWidth; } checkEndTag(TAG_SPACER, parser); setSpacer(keyXPos, keyWidth); setSpacer(keyXPos, keyWidth, row); } } Loading Loading @@ -655,28 +654,27 @@ public class KeyboardBuilder<KP extends KeyboardParams> { } private void startRow(Row row) { mCurrentX = 0; setSpacer(mCurrentX, mParams.mHorizontalEdgesPadding); row.mCurrentX = 0; setSpacer(row.mCurrentX, mParams.mHorizontalEdgesPadding, row); mCurrentRow = row; mLeftEdge = true; mRightEdgeKey = null; } private void endRow() { private void endRow(Row row) { if (mCurrentRow == null) throw new InflateException("orphant end row tag"); if (mRightEdgeKey != null) { mRightEdgeKey.addEdgeFlags(Keyboard.EDGE_RIGHT); mRightEdgeKey = null; } setSpacer(mCurrentX, mParams.mHorizontalEdgesPadding); setSpacer(row.mCurrentX, mParams.mHorizontalEdgesPadding, row); mCurrentY += mCurrentRow.mRowHeight; mCurrentRow = null; mTopEdge = false; } private void endKey(Key key) { mCurrentX = key.mX - key.mHorizontalGap / 2 + key.mWidth + key.mHorizontalGap; if (mLeftEdge) { key.addEdgeFlags(Keyboard.EDGE_LEFT); mLeftEdge = false; Loading @@ -690,8 +688,8 @@ public class KeyboardBuilder<KP extends KeyboardParams> { private void endKeyboard() { } private void setSpacer(int keyXPos, int width) { mCurrentX = keyXPos + width; private void setSpacer(int keyXPos, int width, Row row) { row.mCurrentX = keyXPos + width; mLeftEdge = false; mRightEdgeKey = null; } Loading java/src/com/android/inputmethod/keyboard/internal/Row.java +8 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,11 @@ public class Row { /** Default height of a key in this row. */ public final int mRowHeight; public Row(Resources res, KeyboardParams params, XmlResourceParser parser) { public final int mCurrentY; // Will be updated by {@link Key}'s constructor. public int mCurrentX; public Row(Resources res, KeyboardParams params, XmlResourceParser parser, int y) { final int keyboardWidth = params.mWidth; final int keyboardHeight = params.mHeight; TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), Loading @@ -45,5 +49,8 @@ public class Row { mRowHeight = KeyboardBuilder.getDimensionOrFraction(a, R.styleable.Keyboard_rowHeight, keyboardHeight, params.mDefaultRowHeight); a.recycle(); mCurrentY = y; mCurrentX = 0; } } Loading
java/src/com/android/inputmethod/keyboard/Key.java +9 −6 Original line number Diff line number Diff line Loading @@ -243,14 +243,13 @@ public class Key { * parser. * @param res resources associated with the caller's context * @param params the keyboard building parameters. * @param row the row that this key belongs to. * @param x the x coordinate of the top-left * @param y the y coordinate of the top-left * @param row the row that this key belongs to. row's x-coordinate will be the right edge of * this key. * @param parser the XML parser containing the attributes for this key * @param keyStyles active key styles set */ public Key(Resources res, KeyboardParams params, Row row, int x, int y, XmlResourceParser parser, KeyStyles keyStyles) { public Key(Resources res, KeyboardParams params, Row row, XmlResourceParser parser, KeyStyles keyStyles) { final TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); Loading Loading @@ -284,6 +283,7 @@ public class Key { } final int keyboardWidth = params.mOccupiedWidth; final int x = row.mCurrentX; int keyXPos = KeyboardBuilder.getDimensionOrFraction(keyAttr, R.styleable.Keyboard_Key_keyXPos, keyboardWidth, x); if (keyXPos < 0) { Loading @@ -309,9 +309,12 @@ public class Key { // Horizontal gap is divided equally to both sides of the key. mX = keyXPos + mHorizontalGap / 2; mY = y; mY = row.mCurrentY; mWidth = keyWidth - mHorizontalGap; // Update row to have x-coordinate of the right edge of this key. row.mCurrentX = keyXPos + keyWidth; final CharSequence[] moreKeys = style.getTextArray( keyAttr, R.styleable.Keyboard_Key_moreKeys); // In Arabic symbol layouts, we'd like to keep digits in more keys regardless of Loading
java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java +11 −13 Original line number Diff line number Diff line Loading @@ -128,7 +128,6 @@ public class KeyboardBuilder<KP extends KeyboardParams> { protected final Resources mResources; private final DisplayMetrics mDisplayMetrics; private int mCurrentX = 0; private int mCurrentY = 0; private Row mCurrentRow = null; private boolean mLeftEdge; Loading Loading @@ -314,7 +313,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> { throw new IllegalAttribute(parser, "horizontalGap"); if (a.hasValue(R.styleable.Keyboard_verticalGap)) throw new IllegalAttribute(parser, "verticalGap"); return new Row(mResources, mParams, parser); return new Row(mResources, mParams, parser, mCurrentY); } finally { a.recycle(); } Loading Loading @@ -344,7 +343,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> { if (TAG_ROW.equals(tag)) { if (DEBUG) Log.d(TAG, String.format("</%s>", TAG_ROW)); if (!skip) endRow(); endRow(row); break; } else if (TAG_CASE.equals(tag) || TAG_DEFAULT.equals(tag) || TAG_MERGE.equals(tag)) { Loading @@ -364,7 +363,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> { if (skip) { checkEndTag(TAG_KEY, parser); } else { Key key = new Key(mResources, mParams, row, mCurrentX, mCurrentY, parser, mKeyStyles); Key key = new Key(mResources, mParams, row, parser, mKeyStyles); if (DEBUG) Log.d(TAG, String.format("<%s%s keyLabel=%s code=%d moreKeys=%s />", TAG_KEY, (key.isEnabled() ? "" : " disabled"), key.mLabel, key.mCode, Arrays.toString(key.mMoreKeys))); Loading Loading @@ -392,14 +391,14 @@ public class KeyboardBuilder<KP extends KeyboardParams> { final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard_Key); int keyXPos = KeyboardBuilder.getDimensionOrFraction(keyAttr, R.styleable.Keyboard_Key_keyXPos, keyboardWidth, mCurrentX); R.styleable.Keyboard_Key_keyXPos, keyboardWidth, row.mCurrentX); if (keyXPos < 0) { // If keyXPos is negative, the actual x-coordinate will be display_width + keyXPos. keyXPos += keyboardWidth; } checkEndTag(TAG_SPACER, parser); setSpacer(keyXPos, keyWidth); setSpacer(keyXPos, keyWidth, row); } } Loading Loading @@ -655,28 +654,27 @@ public class KeyboardBuilder<KP extends KeyboardParams> { } private void startRow(Row row) { mCurrentX = 0; setSpacer(mCurrentX, mParams.mHorizontalEdgesPadding); row.mCurrentX = 0; setSpacer(row.mCurrentX, mParams.mHorizontalEdgesPadding, row); mCurrentRow = row; mLeftEdge = true; mRightEdgeKey = null; } private void endRow() { private void endRow(Row row) { if (mCurrentRow == null) throw new InflateException("orphant end row tag"); if (mRightEdgeKey != null) { mRightEdgeKey.addEdgeFlags(Keyboard.EDGE_RIGHT); mRightEdgeKey = null; } setSpacer(mCurrentX, mParams.mHorizontalEdgesPadding); setSpacer(row.mCurrentX, mParams.mHorizontalEdgesPadding, row); mCurrentY += mCurrentRow.mRowHeight; mCurrentRow = null; mTopEdge = false; } private void endKey(Key key) { mCurrentX = key.mX - key.mHorizontalGap / 2 + key.mWidth + key.mHorizontalGap; if (mLeftEdge) { key.addEdgeFlags(Keyboard.EDGE_LEFT); mLeftEdge = false; Loading @@ -690,8 +688,8 @@ public class KeyboardBuilder<KP extends KeyboardParams> { private void endKeyboard() { } private void setSpacer(int keyXPos, int width) { mCurrentX = keyXPos + width; private void setSpacer(int keyXPos, int width, Row row) { row.mCurrentX = keyXPos + width; mLeftEdge = false; mRightEdgeKey = null; } Loading
java/src/com/android/inputmethod/keyboard/internal/Row.java +8 −1 Original line number Diff line number Diff line Loading @@ -35,7 +35,11 @@ public class Row { /** Default height of a key in this row. */ public final int mRowHeight; public Row(Resources res, KeyboardParams params, XmlResourceParser parser) { public final int mCurrentY; // Will be updated by {@link Key}'s constructor. public int mCurrentX; public Row(Resources res, KeyboardParams params, XmlResourceParser parser, int y) { final int keyboardWidth = params.mWidth; final int keyboardHeight = params.mHeight; TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), Loading @@ -45,5 +49,8 @@ public class Row { mRowHeight = KeyboardBuilder.getDimensionOrFraction(a, R.styleable.Keyboard_rowHeight, keyboardHeight, params.mDefaultRowHeight); a.recycle(); mCurrentY = y; mCurrentX = 0; } }