diff options
author | 2024-12-10 01:17:00 +0000 | |
---|---|---|
committer | 2025-01-16 18:37:59 +0000 | |
commit | e5fd8ebc79ea5bd7a5d2a92a0211ac2b5bbbd9a1 (patch) | |
tree | 03e552389d999607e8ef5987508cb44a63c648f9 /packages/PrintSpooler/src | |
parent | 3fa794b61228a0804c8f23f414c982551a03be05 (diff) |
PreviewPageFrame checked state updates
Send the new checked event. Updated to the new checked api.
This widget is using getSelected() as the checked state. We can't send
the event in setSelected() because setSelected in called in
onBindViewHolder and the widget is not attached yet. So we send the
new event when the widget is clicked.
Test: tested on the print preview and checked the new event is sent
when clicked.
Flag: android.view.accessibility.tri_state_checked
Bug: 380327448
Change-Id: I1591425bf7d35ef361cae94ee394cb26b20014ff
Diffstat (limited to 'packages/PrintSpooler/src')
-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()); + } } } |