summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>2015-07-14 16:52:09 +0200
committerSérgio Martins <sergio.martins@kdab.com>2015-07-15 16:31:08 +0000
commitc48d14501fff75741c5d218141005831cd8dc051 (patch)
tree968cefb48400070984c865f86313f1c40bdc4945
parent4572541637f7ce1f93f3b4e0f4d0ab69b01f6ed2 (diff)
downloadqtquickcontrols-c48d14501fff75741c5d218141005831cd8dc051.tar.gz
Make MenuBar, Menu properly accessible
Previously, we had the accessibility settings in the desktop style (only!). Now it's been moved into the actual control implementation. Change-Id: Idb90d164dfd7a72c8188accd9e4fa3b02d567a94 Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
-rw-r--r--src/controls/MenuBar.qml6
-rw-r--r--src/controls/Private/MenuContentItem.qml16
-rw-r--r--src/controls/Styles/Desktop/MenuBarStyle.qml5
-rw-r--r--src/controls/Styles/Desktop/MenuStyle.qml5
4 files changed, 22 insertions, 10 deletions
diff --git a/src/controls/MenuBar.qml b/src/controls/MenuBar.qml
index 3410528c..0d9f8ee8 100644
--- a/src/controls/MenuBar.qml
+++ b/src/controls/MenuBar.qml
@@ -116,6 +116,7 @@ MenuBarPrivate {
property Component __menuBarComponent: Loader {
id: menuBarLoader
+ Accessible.role: Accessible.MenuBar
onStatusChanged: if (status === Loader.Error) console.error("Failed to load panel for", root)
@@ -230,7 +231,12 @@ MenuBarPrivate {
Loader {
id: menuItemLoader
+ Accessible.role: Accessible.MenuItem
+ Accessible.name: StyleHelpers.removeMnemonics(opts.text)
+ Accessible.onPressAction: d.openedMenuIndex = opts.index
+
property var styleData: QtObject {
+ id: opts
readonly property int index: __menuItemIndex
readonly property string text: !!__menuItem && __menuItem.title
readonly property bool enabled: !!__menuItem && __menuItem.enabled
diff --git a/src/controls/Private/MenuContentItem.qml b/src/controls/Private/MenuContentItem.qml
index 6006f8d8..07edea2f 100644
--- a/src/controls/Private/MenuContentItem.qml
+++ b/src/controls/Private/MenuContentItem.qml
@@ -37,12 +37,15 @@
import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.1
+import QtQuick.Controls.Private 1.0
Loader {
id: menuFrameLoader
property var __menu
+ Accessible.role: Accessible.PopupMenu
+
visible: status === Loader.Ready
width: content.width + (d.style ? d.style.padding.left + d.style.padding.right : 0)
height: content.height + (d.style ? d.style.padding.top + d.style.padding.bottom : 0)
@@ -172,6 +175,19 @@ Loader {
Loader {
id: menuItemLoader
+ Accessible.role: opts.type === MenuItemType.Item || opts.type === MenuItemType.Menu ?
+ Accessible.MenuItem : Acccessible.NoRole
+ Accessible.name: StyleHelpers.removeMnemonics(opts.text)
+ Accessible.checkable: opts.checkable
+ Accessible.checked: opts.checked
+ Accessible.onPressAction: {
+ if (opts.type === MenuItemType.Item) {
+ d.triggerAndDismiss(menuItemLoader)
+ } else if (opts.type === MenuItemType.Menu) {
+ __showSubMenu(true /*immediately*/)
+ }
+ }
+
property QtObject styleData: QtObject {
id: opts
readonly property int index: __menuItemIndex
diff --git a/src/controls/Styles/Desktop/MenuBarStyle.qml b/src/controls/Styles/Desktop/MenuBarStyle.qml
index 470ccdb6..a31b2bb7 100644
--- a/src/controls/Styles/Desktop/MenuBarStyle.qml
+++ b/src/controls/Styles/Desktop/MenuBarStyle.qml
@@ -45,8 +45,6 @@ Style {
property Component background: StyleItem {
elementType: "menubar"
- Accessible.role: Accessible.MenuBar
-
Component.onCompleted: {
styleRoot.padding.left = pixelMetric("menubarhmargin") + pixelMetric("menubarpanelwidth")
styleRoot.padding.right = pixelMetric("menubarhmargin") + pixelMetric("menubarpanelwidth")
@@ -69,9 +67,6 @@ Style {
selected: (parent && styleData.selected) || sunken
hints: { "showUnderlined": styleData.underlineMnemonic }
-
- Accessible.role: Accessible.MenuItem
- Accessible.name: plainText
}
property Component menuStyle: Desktop.MenuStyle { }
diff --git a/src/controls/Styles/Desktop/MenuStyle.qml b/src/controls/Styles/Desktop/MenuStyle.qml
index 244bbca4..60e73d2f 100644
--- a/src/controls/Styles/Desktop/MenuStyle.qml
+++ b/src/controls/Styles/Desktop/MenuStyle.qml
@@ -60,8 +60,6 @@ Style {
color: SystemPaletteSingleton.window(control.enabled)
}
- Accessible.role: Accessible.PopupMenu
-
Component.onCompleted: {
var menuHMargin = pixelMetric("menuhmargin")
var menuVMargin = pixelMetric("menuvmargin")
@@ -106,9 +104,6 @@ Style {
"scrollerDirection": styleData.scrollerDirection,
"icon": !!__menuItem && __menuItem.__icon
}
-
- Accessible.role: Accessible.MenuItem
- Accessible.name: StyleHelpers.removeMnemonics(text)
}
property Component scrollIndicator: menuItemPanel