diff --git a/packages/SystemUI/res/layout/window_magnification_settings_view.xml b/packages/SystemUI/res/layout/window_magnification_settings_view.xml index 7dfe7c4c72be0..ae0f8f46599d9 100644 --- a/packages/SystemUI/res/layout/window_magnification_settings_view.xml +++ b/packages/SystemUI/res/layout/window_magnification_settings_view.xml @@ -21,7 +21,9 @@ android:layout_height="wrap_content" android:background="@drawable/accessibility_magnification_setting_view_bg" android:orientation="vertical" - android:padding="@dimen/magnification_setting_background_padding"> + android:padding="@dimen/magnification_setting_background_padding" + android:focusable="true" + android:contentDescription="@string/accessibility_magnification_settings_panel_description"> Magnify part of screen Switch + + Open magnification settings Drag corner to resize @@ -2360,6 +2362,8 @@ Bottom handle + + Magnification settings Magnifier size diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java index b111e1f72f1d8..d35c77c3b231f 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java @@ -1468,7 +1468,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold super.onInitializeAccessibilityNodeInfo(host, info); final AccessibilityAction clickAction = new AccessibilityAction( AccessibilityAction.ACTION_CLICK.getId(), mContext.getResources().getString( - R.string.magnification_mode_switch_click_label)); + R.string.magnification_open_settings_click_label)); info.addAction(clickAction); info.setClickable(true); info.addAction( diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java index 5f153b139755e..e1f3c6cc5c3b0 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationSettings.java @@ -353,6 +353,10 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest } mWindowManager.addView(mSettingView, mParams); + if (resetPosition) { + // Request focus on the settings panel when position of the panel is reset. + mSettingView.requestFocus(); + } // Exclude magnification switch button from system gesture area. setSystemGestureExclusion(); @@ -380,8 +384,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest mSettingView = (LinearLayout) View.inflate(mContext, R.layout.window_magnification_settings_view, null); - mSettingView.setClickable(true); mSettingView.setFocusable(true); + mSettingView.setFocusableInTouchMode(true); mSettingView.setOnTouchListener(this::onTouch); mPanelView = mSettingView.findViewById(R.id.magnifier_panel_view); @@ -530,7 +534,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY, - LayoutParams.FLAG_NOT_FOCUSABLE, + /* _flags= */ 0, PixelFormat.TRANSPARENT); params.gravity = Gravity.TOP | Gravity.START; params.accessibilityTitle = getAccessibilityWindowTitle(context); diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java index 47c91911e52aa..52a70ee9cce2c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationSettingsTest.java @@ -201,6 +201,13 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase { assertThat(magnifierMediumButton.isSelected()).isTrue(); } + @Test + public void showSettingPanel_focusOnThePanel() { + mWindowMagnificationSettings.showSettingPanel(); + + assertThat(mSettingView.isFocused()).isTrue(); + } + private T getInternalView(@IdRes int idRes) { T view = mSettingView.findViewById(idRes); assertNotNull(view);