Merge "AccessibilityNodeInfo bounds in screen incorrect if application scale not one."
This commit is contained in:
committed by
Android (Google) Code Review
commit
9dc2cc53ac
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user