From 1cc4f87c8f0e4484a4fc809bb7223e8a844e5b0d Mon Sep 17 00:00:00 2001 From: re2zero Date: Wed, 26 Aug 2026 19:34:44 +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 45.5% to 72.7%. 为缺失无障碍名称的交互控件添加 setObjectName/setAccessibleName 调用, AT-SPI 覆盖率从 45.5% 提升至 72.7%。 Log: 补全文档查看器 AT-SPI 无障碍名称 Influence: 提升文档查看器 AT-SPI 无障碍覆盖率,便于辅助工具和自动化测试定位控件。 --- reader/MainWindow.cpp | 1 + reader/browser/BrowserMenu.cpp | 1 + reader/uiframe/TitleMenu.cpp | 2 ++ reader/widgets/EncryptionPage.cpp | 2 ++ reader/widgets/RestoreTipWidget.cpp | 4 ++++ reader/widgets/ScaleMenu.cpp | 5 +++++ reader/widgets/SlidePlayWidget.cpp | 6 ++++++ reader/widgets/TextEditWidget.cpp | 2 ++ 8 files changed, 23 insertions(+) diff --git a/reader/MainWindow.cpp b/reader/MainWindow.cpp index 4ae0dca69..32d41f5fa 100755 --- a/reader/MainWindow.cpp +++ b/reader/MainWindow.cpp @@ -630,6 +630,7 @@ void MainWindow::initBase() this->setProperty("windowClosed", false); m_menu = new TitleMenu(this); + m_menu->setObjectName("Menu"); m_menu->setAccessibleName("Menu_Title"); diff --git a/reader/browser/BrowserMenu.cpp b/reader/browser/BrowserMenu.cpp index cbee63479..a81db40f8 100644 --- a/reader/browser/BrowserMenu.cpp +++ b/reader/browser/BrowserMenu.cpp @@ -66,6 +66,7 @@ void BrowserMenu::initActions(DocSheet *sheet, int index, SheetMenuType_e type, } m_pColorWidgetAction = new ColorWidgetAction(this); + m_pColorWidgetAction->setObjectName("PColorWidgetAction"); connect(m_pColorWidgetAction, SIGNAL(sigBtnGroupClicked()), this, SLOT(onSetHighLight())); this->addAction(m_pColorWidgetAction); } diff --git a/reader/uiframe/TitleMenu.cpp b/reader/uiframe/TitleMenu.cpp index c883d5722..a4c6b1d49 100644 --- a/reader/uiframe/TitleMenu.cpp +++ b/reader/uiframe/TitleMenu.cpp @@ -35,9 +35,11 @@ TitleMenu::TitleMenu(DWidget *parent) // 阅读模式(护眼模式)菜单项 m_eyeProtectionAction = new EyeProtectionAction(this); + m_eyeProtectionAction->setObjectName("EyeProtectionAction"); this->addAction(m_eyeProtectionAction); m_handleMenu = new HandleMenu(this); + m_handleMenu->setObjectName("HandleMenu"); m_handleMenu->setDisabled(true); m_handleMenu->setTitle(tr("Tools")); m_handleMenu->setAccessibleName("Menu_Hand"); diff --git a/reader/widgets/EncryptionPage.cpp b/reader/widgets/EncryptionPage.cpp index c4518249b..8298af83a 100644 --- a/reader/widgets/EncryptionPage.cpp +++ b/reader/widgets/EncryptionPage.cpp @@ -41,6 +41,8 @@ void EncryptionPage::InitUI() stringinfolabel->setText(tr("Encrypted file, please enter the password")); m_password = new DPasswordEdit(this); + m_password->setObjectName("Password"); + m_password->setAccessibleName("Password"); m_password->setFixedSize(360, 36); QLineEdit *edit = m_password->lineEdit(); edit->setObjectName("passwdEdit"); diff --git a/reader/widgets/RestoreTipWidget.cpp b/reader/widgets/RestoreTipWidget.cpp index 45f11f508..33ac9a927 100644 --- a/reader/widgets/RestoreTipWidget.cpp +++ b/reader/widgets/RestoreTipWidget.cpp @@ -53,6 +53,8 @@ void RestoreTipWidget::initUI() layout->addStretch(1); m_jumpBtn = new DPushButton(tr("Jump to first page"), this); + m_jumpBtn->setObjectName("JumpBtn"); + m_jumpBtn->setAccessibleName("JumpBtn"); m_jumpBtn->setFixedHeight(28); m_jumpBtn->setFocusPolicy(Qt::NoFocus); DFontSizeManager::instance()->bind(m_jumpBtn, DFontSizeManager::T8); @@ -65,6 +67,8 @@ void RestoreTipWidget::initUI() DDciIcon closeIcon(QStringLiteral(":/icons/deepin/builtin/icons/dr_close_16px.dci")); m_closeBtn = new DIconButton(closeIcon, this); + m_closeBtn->setObjectName("CloseBtn"); + m_closeBtn->setAccessibleName("CloseBtn"); m_closeBtn->setFixedSize(28, 28); m_closeBtn->setIconSize(QSize(16, 16)); m_closeBtn->setFlat(true); diff --git a/reader/widgets/ScaleMenu.cpp b/reader/widgets/ScaleMenu.cpp index a1b916afa..427247135 100644 --- a/reader/widgets/ScaleMenu.cpp +++ b/reader/widgets/ScaleMenu.cpp @@ -27,6 +27,11 @@ void ScaleMenu::readCurDocParam(DocSheet *docSheet) m_pFitWorHAction = createAction(tr("Fit Page"), SLOT(onFitPage()), true); m_pFiteHAction = createAction(tr("Fit Height"), SLOT(onFiteH()), true); m_pFiteWAction = createAction(tr("Fit Width"), SLOT(onFiteW()), true); + m_pTwoPageAction->setObjectName("PTwoPageAction"); + m_pFitDefaultAction->setObjectName("PFitDefaultAction"); + m_pFitWorHAction->setObjectName("PFitWorHaction"); + m_pFiteHAction->setObjectName("PFiteHaction"); + m_pFiteWAction->setObjectName("PFiteWaction"); addSeparator(); const QList &scaleFactorlst = m_sheet->scaleFactorList(); diff --git a/reader/widgets/SlidePlayWidget.cpp b/reader/widgets/SlidePlayWidget.cpp index a94e90502..1d3b156ec 100644 --- a/reader/widgets/SlidePlayWidget.cpp +++ b/reader/widgets/SlidePlayWidget.cpp @@ -45,6 +45,12 @@ void SlidePlayWidget::initControl() m_nextBtn = createBtn(QString("next_normal")); DIconButton *pbtnexit = createBtn(QString("exit_normal")); m_playBtn = pbtnplay; + m_preBtn->setObjectName("PreBtn"); + m_preBtn->setAccessibleName("PreBtn"); + m_nextBtn->setObjectName("NextBtn"); + m_nextBtn->setAccessibleName("NextBtn"); + m_playBtn->setObjectName("PlayBtn"); + m_playBtn->setAccessibleName("PlayBtn"); playout->addWidget(m_preBtn); playout->addWidget(pbtnplay); diff --git a/reader/widgets/TextEditWidget.cpp b/reader/widgets/TextEditWidget.cpp index ded8e15c0..6262be4ba 100644 --- a/reader/widgets/TextEditWidget.cpp +++ b/reader/widgets/TextEditWidget.cpp @@ -206,6 +206,8 @@ void TextEditWidget::initWidget() pHLayoutContant->setContentsMargins(20, 20, 6, 20); m_pTextEdit = new TransparentTextEdit(this); + m_pTextEdit->setObjectName("PTextEdit"); + m_pTextEdit->setAccessibleName("PTextEdit"); connect(m_pTextEdit, SIGNAL(sigNeedShowTips(const QString &, int)), this, SIGNAL(sigNeedShowTips(const QString &, int))); pHLayoutContant->addWidget(m_pTextEdit);