From d4ea19b34206ee74048c0d78d7627797ffc41325 Mon Sep 17 00:00:00 2001 From: Hanxiao Liu Date: Tue, 31 Mar 2026 13:36:34 +0800 Subject: [PATCH] fix: fix screen reader did not read the new status after select subscription with keyboard --- .../common/subscription/SubscriptionsDialog.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-lib/src/main/java/com/microsoft/azure/toolkit/intellij/common/subscription/SubscriptionsDialog.java b/PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-lib/src/main/java/com/microsoft/azure/toolkit/intellij/common/subscription/SubscriptionsDialog.java index 34bc2c75ef0..d46ae27eea0 100644 --- a/PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-lib/src/main/java/com/microsoft/azure/toolkit/intellij/common/subscription/SubscriptionsDialog.java +++ b/PluginsAndFeatures/azure-toolkit-for-intellij/azure-intellij-plugin-lib/src/main/java/com/microsoft/azure/toolkit/intellij/common/subscription/SubscriptionsDialog.java @@ -218,6 +218,19 @@ private void createUIComponents() { final boolean selected = (boolean) model.getValueAt(row, CHECKBOX_COLUMN); model.setValueAt(!selected, row, CHECKBOX_COLUMN); } + if (rows.length > 0) { + final int lastRow = rows[rows.length - 1]; + + final boolean newState = (boolean) model.getValueAt(lastRow, CHECKBOX_COLUMN); + final String subName = (String) model.getValueAt(lastRow, 1); + final String announcement = String.format("%s %s", subName, newState ? "selected" : "deselected"); + table.getAccessibleContext().setAccessibleDescription(announcement); + final Container parent = table.getParent(); + if (parent != null) { + parent.requestFocusInWindow(); + SwingUtilities.invokeLater(table::requestFocusInWindow); + } + } }; table.registerKeyboardAction(actionListener, KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); final AnActionButton refreshAction = new AnActionButton("Refresh", AllIcons.Actions.Refresh) {