summaryrefslogtreecommitdiffstats
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)
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 3410528cf..0d9f8ee84 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 6006f8d89..07edea2f2 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 470ccdb62..a31b2bb72 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 244bbca42..60e73d2f6 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