Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
52fd0f4
Improve Searches and Tags accessibility
mtigzoe Sep 26, 2026
bb23877
Focus category list for screen readers
mtigzoe Sep 26, 2026
5bcf430
Allow screen readers to focus CSV import preview
mtigzoe Sep 26, 2026
8b459dc
Preserve focus when hardware key selection is disabled
mtigzoe Sep 26, 2026
736938b
Preserve search focus when save action hides
mtigzoe Sep 26, 2026
a33e910
Allow Tab to leave attribute selection
mtigzoe Sep 26, 2026
bf12246
Allow Tab to leave additional URL entries
mtigzoe Sep 26, 2026
a242b6a
Improve Tab navigation in entry property views
mtigzoe Sep 26, 2026
1e3579c
Improve TOTP accessibility
mtigzoe Sep 26, 2026
b87d0b3
Improve report accessibility
mtigzoe Sep 26, 2026
89e91ae
Improve password controls accessibility
mtigzoe Sep 26, 2026
191a9ab
Remove unrelated password tooltip change
mtigzoe Sep 26, 2026
4a191a2
Improve screen reader feedback in dialogs and status areas
mtigzoe Sep 26, 2026
d282738
Improve keyboard and tag editor accessibility
mtigzoe Sep 26, 2026
6cbf7de
Improve tag and protected attribute accessibility
mtigzoe Sep 26, 2026
eb181b8
Add accessible names to settings controls
mtigzoe Sep 26, 2026
0731417
Announce message boxes to assistive technology
mtigzoe Sep 26, 2026
5d249b0
Announce status progress updates to assistive technology
mtigzoe Sep 26, 2026
1152885
Make encryption benchmark keyboard accessible
mtigzoe Sep 26, 2026
d9a5498
Announce transient messages to assistive technology
mtigzoe Sep 26, 2026
01c9155
Name attachment images for screen readers
mtigzoe Sep 26, 2026
0756484
Remove duplicate attachment accessibility name
mtigzoe Sep 26, 2026
ecf4d2c
Name Pickchars buttons for screen readers
mtigzoe Sep 26, 2026
d70822a
Name search clear timeout for screen readers
mtigzoe Sep 26, 2026
54f6f30
Allow Tab to leave merge changes table
mtigzoe Sep 26, 2026
ce79ad9
Announce asynchronous update results
mtigzoe Sep 26, 2026
d4d7a00
Restore focus when message widget controls hide
mtigzoe Sep 26, 2026
cbcb061
Avoid moving focus unless message close button is focused
mtigzoe Sep 26, 2026
dea5b4b
Fix Auto-Type focus transition ordering
mtigzoe Sep 26, 2026
9babc05
Restore focus when text attachment editor hides
mtigzoe Sep 26, 2026
294775b
Restore focus when group Auto-Type editor disables
mtigzoe Sep 26, 2026
fe5b73f
Preserve attribute editor focus when protecting
mtigzoe Sep 26, 2026
4b6905e
Preserve SSH agent focus during key refresh
mtigzoe Sep 26, 2026
4415656
Restore focus when hiding entry notes
mtigzoe Sep 26, 2026
444c0ee
Restore focus when entry and group previews hide
mtigzoe Sep 26, 2026
ab84782
Restore focus when category scroll controls disappear
mtigzoe Sep 26, 2026
30bf120
Expose database wizard guidance to screen readers and braille
mtigzoe Sep 26, 2026
245439b
Improve Auto-Type help button accessibility
mtigzoe Sep 26, 2026
1f17f44
Fix focus when revealing additional database key options
mtigzoe Sep 26, 2026
7ea0e3b
Fix focus loss when resetting key component state
mtigzoe Sep 26, 2026
a21ff9e
Improve screen reader feedback for invalid URLs
mtigzoe Sep 26, 2026
6acfa83
Announce image attachment load failures
mtigzoe Sep 26, 2026
88872d1
Give shortcut editor dialog an accessible window title
mtigzoe Sep 26, 2026
3356116
Fix focus when opening key component editor
mtigzoe Sep 26, 2026
61278a1
Allow keyboard editing of browser custom data
mtigzoe Sep 26, 2026
40c748d
Fix keyboard focus for SSH agent external key field
mtigzoe Sep 26, 2026
a25e4df
Improve keyboard access to shortcut editing
mtigzoe Sep 26, 2026
83d8348
Clear displayed shortcut when resetting shortcut input
mtigzoe Sep 26, 2026
0490151
Fix recent database keyboard event handling
mtigzoe Sep 26, 2026
74aee75
Fix recent database keyboard removal
mtigzoe Sep 26, 2026
b935d78
Keep recent database activation on the list widget
mtigzoe Sep 26, 2026
0a1666d
Expose text attachment preview toggle state
mtigzoe Sep 26, 2026
503d06e
Keep text attachment preview toggle state synchronized
mtigzoe Sep 26, 2026
b6f0189
Fix update result accessibility announcement scope
mtigzoe Sep 26, 2026
600c910
Fix toolbar accessibility event scope
mtigzoe Sep 26, 2026
d2fe95f
Avoid automatic TOTP secret announcements
mtigzoe Sep 26, 2026
62a8698
Avoid automatic TOTP secret announcements
mtigzoe Sep 26, 2026
bc1796f
Fix missing QApplication include
mtigzoe Sep 26, 2026
893bbe9
Fix missing accessibility include
mtigzoe Sep 26, 2026
269bd43
Fix missing QPushButton include
mtigzoe Sep 26, 2026
03fa65c
Fix missing QComboBox include
mtigzoe Sep 26, 2026
8727db6
build-rebug.ps1
mtigzoe Sep 26, 2026
5e6d481
build-debug.ps1
mtigzoe Sep 26, 2026
80ca95b
build-rebug.ps1
mtigzoe Sep 26, 2026
6e884a3
Fix invalid accessibility event types
mtigzoe Sep 26, 2026
a688df5
Fix keyboard focus traversal through toolbar
mtigzoe Sep 26, 2026
3d0b230
Fix keyboard focus traversal in group editor
mtigzoe Sep 26, 2026
c316ee3
Remove unused group editor include
mtigzoe Sep 26, 2026
1fcdc67
accessibility-missing-passkeys-catalog
mtigzoe Sep 26, 2026
cb0104f
Improve import type list accessibility
mtigzoe Sep 26, 2026
24a4dd1
Fix import wizard tab order
mtigzoe Sep 26, 2026
4293d18
Complete import wizard tab order
mtigzoe Sep 26, 2026
2d862d3
Fixed bugs on Imort File view
mtigzoe Sep 27, 2026
2d4712a
Improve encryption settings accessibility
mtigzoe Sep 27, 2026
0467a43
Improve encryption settings accessibility
mtigzoe Sep 27, 2026
263c82c
Improve encryption settings accessibility
mtigzoe Sep 27, 2026
db426d6
Fix entry notes Tab navigation
mtigzoe Sep 27, 2026
a2e30ce
Improve import wizard accessibility
mtigzoe Sep 27, 2026
7a431de
Improve import wizard accessibility
mtigzoe Sep 27, 2026
8ec9812
Improve import wizard accessibility
mtigzoe Sep 27, 2026
fae88d0
Improve import wizard accessibility
mtigzoe Sep 27, 2026
e3b8b2a
Restore focus when disabling settings controls
mtigzoe Sep 27, 2026
c14ccb9
Restore focus when disabling settings controls
mtigzoe Sep 27, 2026
4c9ed26
Remove local build script from upstream accessibility branch
mtigzoe Sep 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/autotype/AutoTypeSelectDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ AutoTypeSelectDialog::AutoTypeSelectDialog(QWidget* parent)
});

m_ui->helpButton->setIcon(icons()->icon("system-help"));
m_ui->helpButton->setAccessibleName(tr("Show Auto-Type shortcuts"));
m_ui->helpButton->setFocusPolicy(Qt::TabFocus);

m_ui->search->installEventFilter(this);

Expand Down
3 changes: 2 additions & 1 deletion src/autotype/PickcharsDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ PickcharsDialog::PickcharsDialog(const QString& string, QWidget* parent)
for (const auto& ch : string) {
auto btn = new QPushButton(QString::number(count + 1));
btn->setProperty("char", ch);
btn->setProperty("count", count);
btn->setProperty("count", count);
btn->setAccessibleName(tr("Character %1, position %2").arg(ch).arg(count + 1));
connect(btn, &QPushButton::clicked, this, &PickcharsDialog::charSelected);
m_ui->charsGrid->addWidget(btn, count / width, count % width);
m_lastSelected = count;
Expand Down
78 changes: 66 additions & 12 deletions src/gui/ApplicationSettingsWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include "gui/osutils/OSUtilsBase.h"
#include "ui_ApplicationSettingsWidgetGeneral.h"
#include "ui_ApplicationSettingsWidgetSecurity.h"
#include <QAccessible>
#include <QDesktopServices>
#include <QDir>
#include <QLabel>
Expand Down Expand Up @@ -151,25 +152,45 @@ ApplicationSettingsWidget::ApplicationSettingsWidget(QWidget* parent)
connect(m_generalUi->resetSettingsButton, SIGNAL(clicked()), SLOT(resetSettings()));
connect(m_generalUi->importSettingsButton, SIGNAL(clicked()), SLOT(importSettings()));
connect(m_generalUi->exportSettingsButton, SIGNAL(clicked()), SLOT(exportSettings()));
connect(m_generalUi->useAlternativeSaveCheckBox, SIGNAL(toggled(bool)),
m_generalUi->alternativeSaveComboBox, SLOT(setEnabled(bool)));
connect(m_generalUi->useAlternativeSaveCheckBox, &QCheckBox::toggled, this, [this](bool enabled) {
if (!enabled && m_generalUi->alternativeSaveComboBox->hasFocus()) {
m_generalUi->useAlternativeSaveCheckBox->setFocus();
}
m_generalUi->alternativeSaveComboBox->setEnabled(enabled);
});

connect(m_generalUi->backupBeforeSaveCheckBox, SIGNAL(toggled(bool)),
m_generalUi->backupFilePath, SLOT(setEnabled(bool)));
connect(m_generalUi->backupBeforeSaveCheckBox, SIGNAL(toggled(bool)),
m_generalUi->backupFilePathPicker, SLOT(setEnabled(bool)));
connect(m_generalUi->backupBeforeSaveCheckBox, &QCheckBox::toggled, this, [this](bool enabled) {
if (!enabled
&& (m_generalUi->backupFilePath->hasFocus() || m_generalUi->backupFilePathPicker->hasFocus())) {
m_generalUi->backupBeforeSaveCheckBox->setFocus();
}
m_generalUi->backupFilePath->setEnabled(enabled);
m_generalUi->backupFilePathPicker->setEnabled(enabled);
});
connect(m_generalUi->backupFilePathPicker, SIGNAL(pressed()), SLOT(selectBackupDirectory()));
connect(m_generalUi->showExpiredEntriesOnDatabaseUnlockCheckBox, SIGNAL(toggled(bool)),
SLOT(showExpiredEntriesOnDatabaseUnlockToggled(bool)));
connect(m_generalUi->autoTypeAskCheckBox, SIGNAL(toggled(bool)),
SLOT(autoTypeAskToggled(bool)));

connect(m_secUi->clearClipboardCheckBox, SIGNAL(toggled(bool)),
m_secUi->clearClipboardSpinBox, SLOT(setEnabled(bool)));
connect(m_secUi->clearSearchCheckBox, SIGNAL(toggled(bool)),
m_secUi->clearSearchSpinBox, SLOT(setEnabled(bool)));
connect(m_secUi->lockDatabaseIdleCheckBox, SIGNAL(toggled(bool)),
m_secUi->lockDatabaseIdleSpinBox, SLOT(setEnabled(bool)));
connect(m_secUi->clearClipboardCheckBox, &QCheckBox::toggled, this, [this](bool enabled) {
if (!enabled && m_secUi->clearClipboardSpinBox->hasFocus()) {
m_secUi->clearClipboardCheckBox->setFocus();
}
m_secUi->clearClipboardSpinBox->setEnabled(enabled);
});
connect(m_secUi->clearSearchCheckBox, &QCheckBox::toggled, this, [this](bool enabled) {
if (!enabled && m_secUi->clearSearchSpinBox->hasFocus()) {
m_secUi->clearSearchCheckBox->setFocus();
}
m_secUi->clearSearchSpinBox->setEnabled(enabled);
});
connect(m_secUi->lockDatabaseIdleCheckBox, &QCheckBox::toggled, this, [this](bool enabled) {
if (!enabled && m_secUi->lockDatabaseIdleSpinBox->hasFocus()) {
m_secUi->lockDatabaseIdleCheckBox->setFocus();
}
m_secUi->lockDatabaseIdleSpinBox->setEnabled(enabled);
});
// clang-format on

connect(m_generalUi->minimizeAfterUnlockCheckBox, &QCheckBox::toggled, this, [this](bool state) {
Expand All @@ -178,6 +199,9 @@ ApplicationSettingsWidget::ApplicationSettingsWidget(QWidget* parent)
}
m_secUi->lockDatabaseMinimizeCheckBox->setToolTip(
state ? tr("This setting cannot be enabled when minimize on unlock is enabled.") : "");
if (state && m_secUi->lockDatabaseMinimizeCheckBox->hasFocus()) {
m_secUi->lockDatabaseIdleCheckBox->setFocus();
}
m_secUi->lockDatabaseMinimizeCheckBox->setEnabled(!state);
});

Expand All @@ -187,8 +211,12 @@ ApplicationSettingsWidget::ApplicationSettingsWidget(QWidget* parent)
QString error;
if (autoType()->registerGlobalShortcut(key, modifiers, &error)) {
m_generalUi->autoTypeShortcutWidget->setStyleSheet("");
m_generalUi->autoTypeShortcutWidget->setAccessibleDescription({});
} else {
QToolTip::showText(mapToGlobal(rect().bottomLeft()), error);
m_generalUi->autoTypeShortcutWidget->setAccessibleDescription(error);
QAccessibleEvent alertEvent(m_generalUi->autoTypeShortcutWidget, QAccessible::Alert);
QAccessible::updateAccessibility(&alertEvent);
StateColorPalette statePalette;
auto color = statePalette.color(StateColorPalette::ColorRole::Error);
m_generalUi->autoTypeShortcutWidget->setStyleSheet(
Expand Down Expand Up @@ -658,18 +686,30 @@ void ApplicationSettingsWidget::autoSaveToggled(bool checked)
m_generalUi->autoSaveOnExitCheckBox->setChecked(true);
m_generalUi->autoSaveNonDataChangesCheckBox->setChecked(true);
}
if (checked
&& (m_generalUi->autoSaveOnExitCheckBox->hasFocus() || m_generalUi->autoSaveNonDataChangesCheckBox->hasFocus())) {
m_generalUi->autoSaveAfterEveryChangeCheckBox->setFocus();
}
m_generalUi->autoSaveOnExitCheckBox->setEnabled(!checked);
m_generalUi->autoSaveNonDataChangesCheckBox->setEnabled(!checked);
}

void ApplicationSettingsWidget::hideWindowOnCopyCheckBoxToggled(bool checked)
{
if (!checked
&& (m_generalUi->minimizeOnCopyRadioButton->hasFocus() || m_generalUi->dropToBackgroundOnCopyRadioButton->hasFocus())) {
m_generalUi->hideWindowOnCopyCheckBox->setFocus();
}
m_generalUi->minimizeOnCopyRadioButton->setEnabled(checked);
m_generalUi->dropToBackgroundOnCopyRadioButton->setEnabled(checked);
}

void ApplicationSettingsWidget::systrayToggled(bool checked)
{
if (!checked
&& (m_generalUi->trayIconAppearance->hasFocus() || m_generalUi->systrayMinimizeToTrayCheckBox->hasFocus())) {
m_generalUi->systrayShowCheckBox->setFocus();
}
m_generalUi->trayIconAppearance->setEnabled(checked);
m_generalUi->trayIconAppearanceLabel->setEnabled(checked);
m_generalUi->systrayMinimizeToTrayCheckBox->setEnabled(checked);
Expand All @@ -682,23 +722,37 @@ void ApplicationSettingsWidget::rememberDatabasesToggled(bool checked)
m_generalUi->openPreviousDatabasesOnStartupCheckBox->setChecked(false);
}

if (!checked
&& (m_generalUi->rememberLastDatabasesSpinbox->hasFocus() || m_generalUi->rememberLastKeyFilesCheckBox->hasFocus()
|| m_generalUi->openPreviousDatabasesOnStartupCheckBox->hasFocus())) {
m_generalUi->rememberLastDatabasesCheckBox->setFocus();
}
m_generalUi->rememberLastDatabasesSpinbox->setEnabled(checked);
m_generalUi->rememberLastKeyFilesCheckBox->setEnabled(checked);
m_generalUi->openPreviousDatabasesOnStartupCheckBox->setEnabled(checked);
}

void ApplicationSettingsWidget::checkUpdatesToggled(bool checked)
{
if (!checked && m_generalUi->checkForUpdatesIncludeBetasCheckBox->hasFocus()) {
m_generalUi->checkForUpdatesOnStartupCheckBox->setFocus();
}
m_generalUi->checkForUpdatesIncludeBetasCheckBox->setEnabled(checked);
}

void ApplicationSettingsWidget::showExpiredEntriesOnDatabaseUnlockToggled(bool checked)
{
if (!checked && m_generalUi->showExpiredEntriesOnDatabaseUnlockOffsetSpinBox->hasFocus()) {
m_generalUi->showExpiredEntriesOnDatabaseUnlockCheckBox->setFocus();
}
m_generalUi->showExpiredEntriesOnDatabaseUnlockOffsetSpinBox->setEnabled(checked);
}

void ApplicationSettingsWidget::autoTypeAskToggled(bool checked)
{
if (!checked && m_generalUi->autoTypeSkipMainWindowConfirmationCheckBox->hasFocus()) {
m_generalUi->autoTypeAskCheckBox->setFocus();
}
m_generalUi->autoTypeSkipMainWindowConfirmationCheckBox->setEnabled(checked);
}

Expand Down
12 changes: 12 additions & 0 deletions src/gui/ApplicationSettingsWidgetGeneral.ui
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,12 @@
</item>
<item>
<widget class="QSpinBox" name="rememberLastDatabasesSpinbox">
<property name="accessibleName">
<string>Number of recent databases to remember</string>
</property>
<property name="accessibleDescription">
<string>Sets how many previously used database files are kept in the recent files list.</string>
</property>
<property name="suffix">
<string> recent files</string>
</property>
Expand Down Expand Up @@ -493,6 +499,12 @@
<property name="enabled">
<bool>false</bool>
</property>
<property name="accessibleName">
<string>Alternative saving method</string>
</property>
<property name="accessibleDescription">
<string>Select how KeePassXC saves the database when the alternative saving method is enabled.</string>
</property>
<property name="focusPolicy">
<enum>Qt::FocusPolicy::StrongFocus</enum>
</property>
Expand Down
3 changes: 3 additions & 0 deletions src/gui/ApplicationSettingsWidgetSecurity.ui
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="clearSearchSpinBox">
<property name="accessibleName">
<string>Search query clear time in minutes</string>
</property>
<property name="enabled">
<bool>false</bool>
</property>
Expand Down
13 changes: 11 additions & 2 deletions src/gui/CategoryListWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ CategoryListWidget::CategoryListWidget(QWidget* parent)
m_itemDelegate = new CategoryListWidgetDelegate(m_ui->categoryList);
m_ui->categoryList->setItemDelegate(m_itemDelegate);

// This widget is a composite tab stop; direct focus must enter the actual category list.
setFocusProxy(m_ui->categoryList);

connect(m_ui->categoryList, SIGNAL(currentRowChanged(int)), SLOT(emitCategoryChanged(int)));

connect(m_ui->scrollUp, SIGNAL(clicked()), SLOT(scrollCategoriesUp()));
Expand Down Expand Up @@ -118,12 +121,18 @@ void CategoryListWidget::resizeEvent(QResizeEvent* event)

void CategoryListWidget::updateCategoryScrollButtons()
{
const bool canScroll = m_ui->categoryList->verticalScrollBar()->maximum() > 0;

if (!canScroll && (m_ui->scrollUp->hasFocus() || m_ui->scrollDown->hasFocus())) {
m_ui->categoryList->setFocus(Qt::OtherFocusReason);
}

m_ui->scrollUp->setEnabled(m_ui->categoryList->verticalScrollBar()->value() != 0);
m_ui->scrollDown->setEnabled(m_ui->categoryList->verticalScrollBar()->value()
!= m_ui->categoryList->verticalScrollBar()->maximum());

m_ui->scrollUp->setVisible(m_ui->categoryList->verticalScrollBar()->maximum() > 0);
m_ui->scrollDown->setVisible(m_ui->scrollUp->isVisible());
m_ui->scrollUp->setVisible(canScroll);
m_ui->scrollDown->setVisible(canScroll);
}

void CategoryListWidget::scrollCategoriesUp()
Expand Down
7 changes: 6 additions & 1 deletion src/gui/DatabaseOpenWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,12 @@ DatabaseOpenWidget::DatabaseOpenWidget(QWidget* parent)
m_ui->addKeyFileLinkLabel->setVisible(!state);
m_ui->selectKeyFileComponent->setVisible(state);
});
connect(m_ui->useHardwareKeyCheckBox, &QCheckBox::toggled, m_ui->hardwareKeyCombo, &QComboBox::setEnabled);
connect(m_ui->useHardwareKeyCheckBox, &QCheckBox::toggled, this, [this](bool enabled) {
if (!enabled && m_ui->hardwareKeyCombo->hasFocus()) {
m_ui->useHardwareKeyCheckBox->setFocus(Qt::OtherFocusReason);
}
m_ui->hardwareKeyCombo->setEnabled(enabled);
});

m_ui->selectKeyFileComponent->setVisible(false);
toggleHardwareKeyComponent(false);
Expand Down
21 changes: 19 additions & 2 deletions src/gui/DatabaseWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "DatabaseWidget.h"

#include <QApplication>
#include <QAccessible>
#include <QBoxLayout>
#include <QCheckBox>
#include <QDesktopServices>
Expand Down Expand Up @@ -157,21 +158,25 @@ DatabaseWidget::DatabaseWidget(QSharedPointer<Database> db, QWidget* parent)
m_previewSplitter->setChildrenCollapsible(true);

m_groupView->setObjectName("groupView");
m_groupView->setAccessibleName(tr("Groups"));
m_groupView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(m_groupView, SIGNAL(customContextMenuRequested(QPoint)), SLOT(emitGroupContextMenuRequested(QPoint)));

m_entryView->setObjectName("entryView");
m_entryView->setAccessibleName(tr("Entries"));
m_entryView->setContextMenuPolicy(Qt::CustomContextMenu);
m_entryView->displayGroup(m_db->rootGroup());
connect(m_entryView, SIGNAL(customContextMenuRequested(QPoint)), SLOT(emitEntryContextMenuRequested(QPoint)));

// Add a notification for when we are searching
m_searchingLabel->setObjectName("SearchBanner");
m_searchingLabel->setAccessibleName(tr("Search status"));
m_searchingLabel->setText(tr("Searching…"));
m_searchingLabel->setAlignment(Qt::AlignCenter);
m_searchingLabel->setVisible(false);

m_shareLabel->setObjectName("KeeShareBanner");
m_shareLabel->setAccessibleName(tr("Shared group status"));
m_shareLabel->setRawText(tr("Shared group…"));
m_shareLabel->setAlignment(Qt::AlignCenter);
m_shareLabel->setVisible(false);
Expand Down Expand Up @@ -415,8 +420,16 @@ void DatabaseWidget::setSplitterSizes(const QHash<Config::ConfigKey, QList<int>>
void DatabaseWidget::onConfigChanged(Config::ConfigKey key)
{
if (key == Config::GUI_HideGroupPanel) {
// Toggle the group splitter visibility and reset the size
m_groupSplitter->setVisible(!config()->get(Config::GUI_HideGroupPanel).toBool());
// Hiding the group panel can remove the focused group/tag view. Move
// focus to the entry view first so keyboard and screen-reader users
// are not left with focus on a hidden widget.
const bool hideGroupPanel = config()->get(Config::GUI_HideGroupPanel).toBool();
const auto focusWidget = QApplication::focusWidget();
if (hideGroupPanel && m_groupSplitter->isVisible() && focusWidget
&& m_groupSplitter->isAncestorOf(focusWidget)) {
m_entryView->setFocus();
}
m_groupSplitter->setVisible(!hideGroupPanel);
setSplitterSizes({{Config::GUI_SplitterState, QList<int>({})}});
}
}
Expand Down Expand Up @@ -1773,6 +1786,10 @@ void DatabaseWidget::search(const QString& searchtext)
m_lastSearchText = searchtext;

m_searchingLabel->setVisible(true);
#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
QAccessibleAnnouncementEvent announcementEvent(m_searchingLabel, m_searchingLabel->text());
QAccessible::updateAccessibility(&announcementEvent);
#endif
m_shareLabel->setVisible(false);

emit searchModeActivated();
Expand Down
3 changes: 3 additions & 0 deletions src/gui/EditWidgetIcons.ui
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="tabKeyNavigation">
<bool>false</bool>
</property>
<property name="movement">
<enum>QListView::Static</enum>
</property>
Expand Down
5 changes: 5 additions & 0 deletions src/gui/EditWidgetProperties.ui
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,9 @@
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="tabKeyNavigation">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>200</number>
</attribute>
Expand Down Expand Up @@ -185,6 +188,8 @@
<tabstop>createdEdit</tabstop>
<tabstop>modifiedEdit</tabstop>
<tabstop>uuidEdit</tabstop>
<tabstop>customDataTable</tabstop>
<tabstop>removeCustomDataButton</tabstop>
</tabstops>
<resources/>
<connections/>
Expand Down
Loading
Loading