diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-08-20 14:32:29 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-09-04 14:50:36 +0200 |
commit | 68206db907f2f973986e816589d2a349708e6acc (patch) | |
tree | 29d3b3a3503defbf09895b9b7f37b9805ea47f60 /src | |
parent | 52f859604ddc12d273111644bbfd78f7f8a030ea (diff) |
Improve accelerator stripping in accessible widgets
When we strip the & we should also report the hotkey.
In addition only strip labels when they are buddys and try not to remove
ampersands from all kinds of random text.
This fixes https://bugs.kde.org/show_bug.cgi?id=338282
Change-Id: I401281cd9ff43b23a3923ad9909ca9c469b59506
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/widgets/accessible/qaccessiblemenu.cpp | 3 | ||||
-rw-r--r-- | src/widgets/accessible/qaccessiblewidgets.cpp | 3 | ||||
-rw-r--r-- | src/widgets/accessible/simplewidgets.cpp | 15 |
3 files changed, 14 insertions, 7 deletions
diff --git a/src/widgets/accessible/qaccessiblemenu.cpp b/src/widgets/accessible/qaccessiblemenu.cpp index f47980d786..82c3675508 100644 --- a/src/widgets/accessible/qaccessiblemenu.cpp +++ b/src/widgets/accessible/qaccessiblemenu.cpp @@ -294,8 +294,7 @@ QString QAccessibleMenuItem::text(QAccessible::Text t) const QString str; switch (t) { case QAccessible::Name: - str = m_action->text(); - str = qt_accStripAmp(str); + str = qt_accStripAmp(m_action->text()); break; case QAccessible::Accelerator: { #ifndef QT_NO_SHORTCUT diff --git a/src/widgets/accessible/qaccessiblewidgets.cpp b/src/widgets/accessible/qaccessiblewidgets.cpp index cc6310d591..b28f05cf8e 100644 --- a/src/widgets/accessible/qaccessiblewidgets.cpp +++ b/src/widgets/accessible/qaccessiblewidgets.cpp @@ -73,6 +73,7 @@ QT_BEGIN_NAMESPACE QString qt_accStripAmp(const QString &text); +QString qt_accHotKey(const QString &text); QList<QWidget*> childWidgets(const QWidget *widget) { @@ -636,6 +637,8 @@ QString QAccessibleDockWidget::text(QAccessible::Text t) const { if (t == QAccessible::Name) { return qt_accStripAmp(dockWidget()->windowTitle()); + } else if (t == QAccessible::Accelerator) { + return qt_accHotKey(dockWidget()->windowTitle()); } return QString(); } diff --git a/src/widgets/accessible/simplewidgets.cpp b/src/widgets/accessible/simplewidgets.cpp index 2064914683..d5933a6804 100644 --- a/src/widgets/accessible/simplewidgets.cpp +++ b/src/widgets/accessible/simplewidgets.cpp @@ -121,14 +121,14 @@ QString QAccessibleButton::text(QAccessible::Text t) const case QAccessible::Name: str = widget()->accessibleName(); if (str.isEmpty()) - str = button()->text(); + str = qt_accStripAmp(button()->text()); break; default: break; } if (str.isEmpty()) str = QAccessibleWidget::text(t); - return qt_accStripAmp(str); + return str; } QAccessible::State QAccessibleButton::state() const @@ -395,6 +395,8 @@ QString QAccessibleDisplay::text(QAccessible::Text t) const doc.setHtml(str); str = doc.toPlainText(); } + if (label->buddy()) + str = qt_accStripAmp(str); #ifndef QT_NO_LCDNUMBER } else if (qobject_cast<QLCDNumber*>(object())) { QLCDNumber *l = qobject_cast<QLCDNumber*>(object()); @@ -419,7 +421,7 @@ QString QAccessibleDisplay::text(QAccessible::Text t) const } if (str.isEmpty()) str = QAccessibleWidget::text(t); - return qt_accStripAmp(str); + return str; } /*! \reimp */ @@ -508,7 +510,10 @@ QString QAccessibleGroupBox::text(QAccessible::Text t) const txt = qt_accStripAmp(groupBox()->title()); break; case QAccessible::Description: - txt = qt_accStripAmp(groupBox()->toolTip()); + txt = groupBox()->toolTip(); + break; + case QAccessible::Accelerator: + txt = qt_accHotKey(groupBox()->title()); break; default: break; @@ -611,7 +616,7 @@ QString QAccessibleLineEdit::text(QAccessible::Text t) const } if (str.isEmpty()) str = QAccessibleWidget::text(t); - return qt_accStripAmp(str); + return str; } void QAccessibleLineEdit::setText(QAccessible::Text t, const QString &text) |