diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-05-20 15:27:08 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-10-03 07:51:51 +0000 |
commit | 818d7340e7f0dfeca7c93887702a09f64e07ced9 (patch) | |
tree | 941940de8ea8d40333703647c9d16fd3f84a3d7d /src/quick/items/qquickitem.cpp | |
parent | ec866a4d72ee5d07c44257d409796c171bcd04f2 (diff) |
QQuickItemPrivate::canAcceptTabFocus(): respect non-editable spinboxes
In Qt Quick Controls 2, SpinBox can be a non-editable mobile-like value
"stepper".
Change-Id: If1440170c9d5dc193e01541bcf3c706ab4fc346e
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quick/items/qquickitem.cpp')
-rw-r--r-- | src/quick/items/qquickitem.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 8e2d32a818..f7e7a1b773 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -2454,20 +2454,19 @@ bool QQuickItemPrivate::canAcceptTabFocus(QQuickItem *item) return true; #if QT_CONFIG(accessibility) - if (QObject *acc = qmlAttachedPropertiesObject<QQuickAccessibleAttached>(item, false)) { - int role = acc->property("role").toInt(); - if (role == QAccessible::EditableText - || role == QAccessible::Table - || role == QAccessible::List - || role == QAccessible::SpinBox) { - return true; - } else if (role == QAccessible::ComboBox) { - QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(item); + QAccessible::Role role = QQuickItemPrivate::get(item)->accessibleRole(); + if (role == QAccessible::EditableText || role == QAccessible::Table || role == QAccessible::List) { + return true; + } else if (role == QAccessible::ComboBox || role == QAccessible::SpinBox) { + if (QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(item)) return iface->state().editable; - } } #endif + QVariant editable = item->property("editable"); + if (editable.isValid()) + return editable.toBool(); + QVariant readonly = item->property("readOnly"); if (readonly.isValid() && !readonly.toBool() && item->property("text").isValid()) return true; |