Merge "AccessibilityNodeInfo bounds in screen incorrect if application scale not one."

This commit is contained in:
Svetoslav Ganov
2012-07-03 21:11:35 -07:00
committed by Android (Google) Code Review
2 changed files with 12 additions and 0 deletions

View File

@@ -4697,10 +4697,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
Rect bounds = mAttachInfo.mTmpInvalRect;
final float applicationScale = mAttachInfo.mApplicationScale;
getDrawingRect(bounds);
bounds.scale(applicationScale);
info.setBoundsInParent(bounds);
getBoundsOnScreen(bounds);
bounds.scale(applicationScale);
info.setBoundsInScreen(bounds);
ViewParent parent = getParentForAccessibility();

View File

@@ -2421,14 +2421,22 @@ public class NumberPicker extends LinearLayout {
info.setParent((View) getParentForAccessibility());
info.setEnabled(NumberPicker.this.isEnabled());
info.setScrollable(true);
final float applicationScale =
getContext().getResources().getCompatibilityInfo().applicationScale;
Rect boundsInParent = mTempRect;
boundsInParent.set(left, top, right, bottom);
boundsInParent.scale(applicationScale);
info.setBoundsInParent(boundsInParent);
info.setVisibleToUser(isVisibleToUser());
Rect boundsInScreen = boundsInParent;
int[] locationOnScreen = mTempArray;
getLocationOnScreen(locationOnScreen);
boundsInScreen.offset(locationOnScreen[0], locationOnScreen[1]);
boundsInScreen.scale(applicationScale);
info.setBoundsInScreen(boundsInScreen);
if (mAccessibilityFocusedView != View.NO_ID) {