From 7657ff9fb00197bf254bc9b30ddd09730329b78e Mon Sep 17 00:00:00 2001 From: re2zero Date: Wed, 26 Aug 2026 19:34:47 +0800 Subject: [PATCH] feat: add AT-SPI accessible names for interactive widgets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add setObjectName/setAccessibleName calls to interactive widgets missing accessibility names, improving AT-SPI coverage from 73.8% to 90.8%. 为缺失无障碍名称的交互控件添加 setObjectName/setAccessibleName 调用, AT-SPI 覆盖率从 73.8% 提升至 90.8%。 Log: 补全文本编辑器 AT-SPI 无障碍名称 Influence: 提升文本编辑器 AT-SPI 无障碍覆盖率,便于辅助工具和自动化测试定位控件。 --- src/controls/linebar.cpp | 2 ++ src/editor/showflodcodewidget.cpp | 2 ++ src/widgets/ColorSelectWdg.cpp | 2 ++ src/widgets/bottombar.cpp | 2 ++ src/widgets/ddropdownmenu.cpp | 4 ++++ src/widgets/pathsettintwgt.cpp | 1 + src/widgets/window.cpp | 4 ++++ 7 files changed, 17 insertions(+) diff --git a/src/controls/linebar.cpp b/src/controls/linebar.cpp index 99754485c..714b20766 100644 --- a/src/controls/linebar.cpp +++ b/src/controls/linebar.cpp @@ -43,6 +43,8 @@ LineBar::LineBar(DLineEdit *parent) m_matchCountLabel->hide(); m_clearButton = new DIconButton(QStyle::SP_LineEditClearButton, lineEdit()); + m_clearButton->setObjectName("ClearButton"); + m_clearButton->setAccessibleName("ClearButton"); m_clearButton->setFixedSize(s_nClearButtonSize, s_nClearButtonSize); m_clearButton->setIconSize(QSize(s_nClearButtonSize, s_nClearButtonSize)); m_clearButton->setFocusPolicy(Qt::NoFocus); diff --git a/src/editor/showflodcodewidget.cpp b/src/editor/showflodcodewidget.cpp index 68bd6ee5b..25259ebbd 100644 --- a/src/editor/showflodcodewidget.cpp +++ b/src/editor/showflodcodewidget.cpp @@ -33,6 +33,8 @@ ShowFlodCodeWidget::ShowFlodCodeWidget(DWidget *parent) this->setGraphicsEffect(effert); QVBoxLayout *pSubLayout = new QVBoxLayout(); m_pContentEdit = new DPlainTextEdit(this); + m_pContentEdit->setObjectName("PContentEdit"); + m_pContentEdit->setAccessibleName("PContentEdit"); m_pContentEdit->setWordWrapMode(QTextOption::WrapAnywhere); m_pContentEdit->setFrameStyle(0); m_pContentEdit->setReadOnly(true); diff --git a/src/widgets/ColorSelectWdg.cpp b/src/widgets/ColorSelectWdg.cpp index cdd15aa0f..2897d3768 100644 --- a/src/widgets/ColorSelectWdg.cpp +++ b/src/widgets/ColorSelectWdg.cpp @@ -197,6 +197,8 @@ void ColorSelectWdg::initWidget() if(!m_text.isEmpty()){ qDebug() << "ColorSelectWdg initWidget, text is not empty, creating button"; m_pButton = new DPushButton(m_text,this); + m_pButton->setObjectName("PButton"); + m_pButton->setAccessibleName("PButton"); m_pButton->setMinimumSize(80,25); m_pButton->setFlat(true); connect(m_pButton,&QPushButton::clicked,this,[this](){ diff --git a/src/widgets/bottombar.cpp b/src/widgets/bottombar.cpp index c12028dfd..901a106d3 100644 --- a/src/widgets/bottombar.cpp +++ b/src/widgets/bottombar.cpp @@ -409,7 +409,9 @@ void BottomBar::initFormatMenu() m_formatMenu->setMenuActionGroup(actionGroup); m_unixAction = menu->addAction("Unix"); + m_unixAction->setObjectName("UnixAction"); m_windowsAction = menu->addAction("Windows"); + m_windowsAction->setObjectName("WindowsAction"); m_unixAction->setProperty(FormatActionType,EndlineFormat::Unix); m_windowsAction->setProperty(FormatActionType,EndlineFormat::Windows); actionGroup->addAction(m_unixAction); diff --git a/src/widgets/ddropdownmenu.cpp b/src/widgets/ddropdownmenu.cpp index 205811695..ff690baca 100644 --- a/src/widgets/ddropdownmenu.cpp +++ b/src/widgets/ddropdownmenu.cpp @@ -224,6 +224,8 @@ void DDropdownMenu::setMenu(DMenu *menu) qDebug() << "DDropdownMenu setMenu"; deleteMenu(); m_menu = menu; + m_menu->setObjectName("Menu"); + m_menu->setAccessibleName("Menu"); } void DDropdownMenu::deleteMenu() @@ -242,6 +244,7 @@ void DDropdownMenu::setMenuActionGroup(QActionGroup *actionGroup) qDebug() << "DDropdownMenu setMenuActionGroup"; deleteMenuActionGroup(); m_actionGroup = actionGroup; + m_actionGroup->setObjectName("ActionGroup"); qDebug() << "DDropdownMenu setMenuActionGroup end"; } @@ -329,6 +332,7 @@ DDropdownMenu *DDropdownMenu::createEncodeMenu() m_pEncodeMenu->m_pActUtf8 = act; act->setCheckable(true); act->setChecked(true); + m_pEncodeMenu->m_pActUtf8->setObjectName("PActUtf8"); } else { qDebug() << "Adding other action"; act->setCheckable(false); diff --git a/src/widgets/pathsettintwgt.cpp b/src/widgets/pathsettintwgt.cpp index a8128c9c1..98a87f77a 100644 --- a/src/widgets/pathsettintwgt.cpp +++ b/src/widgets/pathsettintwgt.cpp @@ -67,6 +67,7 @@ void PathSettingWgt::init() qDebug() << "PathSettingWgt init"; QVBoxLayout* layout = new QVBoxLayout(this); m_group = new QButtonGroup(this); + m_group->setObjectName("Group"); layout->setContentsMargins(0,0,0,0); m_curFileBox = new DCheckBox(this); m_curFileBox->setAccessibleName("SamePathAsCurrentFile"); diff --git a/src/widgets/window.cpp b/src/widgets/window.cpp index 081f0ae34..352d3bb0e 100644 --- a/src/widgets/window.cpp +++ b/src/widgets/window.cpp @@ -219,6 +219,8 @@ Window::Window(DMainWindow *parent) m_themePath(Settings::instance()->settings->option("advance.editor.theme")->value().toString()) { qDebug() << "Window constructor called"; + m_tabbar->setObjectName("Tabbar"); + m_tabbar->setAccessibleName("Tabbar"); qRegisterMetaType("TextEdit"); m_rootSaveDBus = new DBusDaemon::dbus("com.deepin.editor.daemon", "/", QDBusConnection::systemBus(), this); @@ -559,6 +561,8 @@ void Window::initTitlebar() replaceAction->setObjectName("Replace"); m_menu->addAction(newWindowAction); + m_menu->setObjectName("Menu_2"); + m_menu->setAccessibleName("Menu_2"); m_menu->addAction(newTabAction); m_menu->addAction(openFileAction); m_menu->addSeparator();