diff options
author | 2025-02-11 10:33:21 -0800 | |
---|---|---|
committer | 2025-02-11 10:33:21 -0800 | |
commit | 9861164b04ea8d643d6db06d2eedfda1c45456e6 (patch) | |
tree | 13515ee630eadb03c22b0919a5a76b54019957f0 | |
parent | 44a905df3323798545866ddefa1b8a222c5cb9b0 (diff) | |
parent | e5fd8ebc79ea5bd7a5d2a92a0211ac2b5bbbd9a1 (diff) |
Merge "PreviewPageFrame checked state updates" into main
-rw-r--r-- | packages/PrintSpooler/src/com/android/printspooler/widget/PreviewPageFrame.java | 23 |
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()); + } } } |