From b4f1021885e6812350d5ad9547344deb422fd4b2 Mon Sep 17 00:00:00 2001 From: Skylot <118523+skylot@users.noreply.github.com> Date: Mon, 17 Mar 2025 21:25:59 +0000 Subject: [PATCH] fix(gui): improve accessibility of preferences dialog (#2445) --- .../jadx/gui/settings/ui/JadxSettingsWindow.java | 1 + .../java/jadx/gui/settings/ui/SettingsGroup.java | 14 +++++++++----- .../settings/ui/plugins/PluginSettingsGroup.java | 5 +++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/settings/ui/JadxSettingsWindow.java b/jadx-gui/src/main/java/jadx/gui/settings/ui/JadxSettingsWindow.java index 0e7bbcfc2..4c033b533 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/ui/JadxSettingsWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/ui/JadxSettingsWindow.java @@ -142,6 +142,7 @@ public class JadxSettingsWindow extends JDialog { tree = new SettingsTree(); tree.init(wrapGroupPanel, groups); + tree.setFocusable(true); JScrollPane leftPane = new JScrollPane(tree); leftPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 3, 3)); diff --git a/jadx-gui/src/main/java/jadx/gui/settings/ui/SettingsGroup.java b/jadx-gui/src/main/java/jadx/gui/settings/ui/SettingsGroup.java index aa6c3c68f..a2383f450 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/ui/SettingsGroup.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/ui/SettingsGroup.java @@ -39,10 +39,18 @@ public class SettingsGroup implements ISettingsGroup { } public JLabel addRow(String label, String tooltip, JComponent comp) { - c.gridy = row++; JLabel rowLbl = new JLabel(label); rowLbl.setLabelFor(comp); rowLbl.setHorizontalAlignment(SwingConstants.LEFT); + if (tooltip != null) { + rowLbl.setToolTipText(tooltip); + comp.setToolTipText(tooltip); + } else { + comp.setToolTipText(label); + } + comp.getAccessibleContext().setAccessibleName(label); + + c.gridy = row++; c.gridx = 0; c.gridwidth = 1; c.anchor = GridBagConstraints.LINE_START; @@ -55,10 +63,6 @@ public class SettingsGroup implements ISettingsGroup { c.weightx = 0.7; c.fill = GridBagConstraints.LINE_START; - if (tooltip != null) { - rowLbl.setToolTipText(tooltip); - comp.setToolTipText(tooltip); - } gridPanel.add(comp, c); comp.addPropertyChangeListener("enabled", evt -> rowLbl.setEnabled((boolean) evt.getNewValue())); return rowLbl; diff --git a/jadx-gui/src/main/java/jadx/gui/settings/ui/plugins/PluginSettingsGroup.java b/jadx-gui/src/main/java/jadx/gui/settings/ui/plugins/PluginSettingsGroup.java index 5aeeb4153..857aece72 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/ui/plugins/PluginSettingsGroup.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/ui/plugins/PluginSettingsGroup.java @@ -96,6 +96,7 @@ class PluginSettingsGroup implements ISettingsGroup { pluginList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); pluginList.setCellRenderer(new PluginsListCellRenderer()); pluginList.addListSelectionListener(ev -> onSelection(pluginList.getSelectedValue())); + pluginList.setFocusable(true); JScrollPane scrollPane = new JScrollPane(pluginList); scrollPane.setMinimumSize(new Dimension(80, 120)); @@ -276,8 +277,7 @@ class PluginSettingsGroup implements ISettingsGroup { titleLbl = new JLabel(); titleLbl.setHorizontalAlignment(SwingConstants.CENTER); - titleLbl.setEnabled(false); - versionLbl.setPreferredSize(new Dimension(40, 10)); + titleLbl.setPreferredSize(new Dimension(40, 10)); } @Override @@ -290,6 +290,7 @@ class PluginSettingsGroup implements ISettingsGroup { nameLbl.setText(plugin.getTitle()); nameLbl.setToolTipText(plugin.getLocationId()); versionLbl.setText(Utils.getOrElse(plugin.getVersion(), "")); + panel.getAccessibleContext().setAccessibleName(plugin.getTitle()); boolean enabled = !plugin.isDisabled(); nameLbl.setEnabled(enabled);