summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-08-20 14:32:29 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-09-04 14:50:36 +0200
commit68206db907f2f973986e816589d2a349708e6acc (patch)
tree29d3b3a3503defbf09895b9b7f37b9805ea47f60 /src
parent52f859604ddc12d273111644bbfd78f7f8a030ea (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.cpp3
-rw-r--r--src/widgets/accessible/qaccessiblewidgets.cpp3
-rw-r--r--src/widgets/accessible/simplewidgets.cpp15
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)