summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yinglei Wang <yingleiw@google.com> 2025-02-11 10:33:21 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-11 10:33:21 -0800
commit9861164b04ea8d643d6db06d2eedfda1c45456e6 (patch)
tree13515ee630eadb03c22b0919a5a76b54019957f0
parent44a905df3323798545866ddefa1b8a222c5cb9b0 (diff)
parente5fd8ebc79ea5bd7a5d2a92a0211ac2b5bbbd9a1 (diff)
Merge "PreviewPageFrame checked state updates" into main
-rw-r--r--packages/PrintSpooler/src/com/android/printspooler/widget/PreviewPageFrame.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/packages/PrintSpooler/src/com/android/printspooler/widget/PreviewPageFrame.java b/packages/PrintSpooler/src/com/android/printspooler/widget/PreviewPageFrame.java
index 95bdb093aafe..e735610a81ac 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/widget/PreviewPageFrame.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/widget/PreviewPageFrame.java
@@ -16,6 +16,8 @@
package com.android.printspooler.widget;
+import static android.view.accessibility.Flags.triStateChecked;
+
import android.content.Context;
import android.util.AttributeSet;
import android.view.accessibility.AccessibilityEvent;
@@ -38,6 +40,20 @@ public final class PreviewPageFrame extends LinearLayout {
}
@Override
+ public boolean performClick() {
+ final boolean result = super.performClick();
+ // This widget is incorrectly using the notion of "selection"
+ // to represent checked state. We can't send this event in
+ // setSelected() because setSelected() is called when this widget
+ // is not attached.
+ if (triStateChecked()) {
+ notifyViewAccessibilityStateChangedIfNeeded(
+ AccessibilityEvent.CONTENT_CHANGE_TYPE_CHECKED);
+ }
+ return result;
+ }
+
+ @Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(event);
event.setChecked(isSelected());
@@ -48,6 +64,11 @@ public final class PreviewPageFrame extends LinearLayout {
super.onInitializeAccessibilityNodeInfo(info);
info.setSelected(false);
info.setCheckable(true);
- info.setChecked(isSelected());
+ if (triStateChecked()) {
+ info.setChecked(isSelected() ? AccessibilityNodeInfo.CHECKED_STATE_TRUE :
+ AccessibilityNodeInfo.CHECKED_STATE_FALSE);
+ } else {
+ info.setChecked(isSelected());
+ }
}
}