From 77ec8713cef76a14bf7df27a1f669711afa88f54 Mon Sep 17 00:00:00 2001 From: Keisuke Kuroynagi Date: Mon, 24 Jun 2013 11:58:56 +0900 Subject: [PATCH] Extend center point vertically for bottom keys on a keyboard. Bug: 9505397 Change-Id: Ic415ac4065d23cb832dd3bb85876e2a4dc9e9fc3 --- .../suggest/core/layout/proximity_info.cpp | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/native/jni/src/suggest/core/layout/proximity_info.cpp b/native/jni/src/suggest/core/layout/proximity_info.cpp index 05826a5a1..e64476d82 100644 --- a/native/jni/src/suggest/core/layout/proximity_info.cpp +++ b/native/jni/src/suggest/core/layout/proximity_info.cpp @@ -215,22 +215,30 @@ int ProximityInfo::getKeyCenterXOfKeyIdG( return centerX; } -// referencePointY is currently not used because we don't specially handle keys higher than the -// most common key height. When the referencePointY is NOT_A_COORDINATE, this method should -// calculate the return value without using the line segment. +// When the referencePointY is NOT_A_COORDINATE, this method calculates the return value without +// using the line segment. int ProximityInfo::getKeyCenterYOfKeyIdG( const int keyId, const int referencePointY, const bool isGeometric) const { // TODO: Remove "isGeometric" and have separate "proximity_info"s for gesture and typing. if (keyId < 0) { return 0; } + int centerY; if (!hasTouchPositionCorrectionData()) { - return mCenterYsG[keyId]; + centerY = mCenterYsG[keyId]; } else if (isGeometric) { - return static_cast(mSweetSpotCenterYsG[keyId]); + centerY = static_cast(mSweetSpotCenterYsG[keyId]); } else { - return static_cast(mSweetSpotCenterYs[keyId]); + centerY = static_cast(mSweetSpotCenterYs[keyId]); } + if (referencePointY != NOT_A_COORDINATE && + centerY + mKeyHeights[keyId] > KEYBOARD_HEIGHT && centerY < referencePointY) { + // When the distance between center point and bottom edge of the keyboard is shorter than + // the key height, we assume the key is located at the bottom row of the keyboard. + // The center point is extended to the bottom edge for such keys. + return referencePointY; + } + return centerY; } int ProximityInfo::getKeyKeyDistanceG(const int keyId0, const int keyId1) const {