Treat the accessible non-editable combobox as ButtonMenu on macOS

Following the system design, we should treat the non-editable combobox
as a ButtonMenu. All of the similar elements in macOS's UI are called
ButtonMenu with the screen reader.

This fixes the case when ctrl+option+space does not invoke the popup
menu with options.

Fixes: QTBUG-106162
Change-Id: I0b439c56d72d1fe5b32a60eb7c001f863c00adc1
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
bb10
Mikolaj Boc 2022-12-14 17:40:22 +01:00
parent c672f148db
commit b53dcb4e67
2 changed files with 3 additions and 0 deletions

View File

@ -155,6 +155,8 @@ NSString *macRole(QAccessibleInterface *interface)
if (roleMap.contains(qtRole)) {
// MAC_ACCESSIBILTY_DEBUG() << "return" << roleMap[qtRole];
if (roleMap[qtRole] == NSAccessibilityComboBoxRole && !interface->state().editable)
return NSAccessibilityMenuButtonRole;
if (roleMap[qtRole] == NSAccessibilityTextFieldRole && interface->state().multiLine)
return NSAccessibilityTextAreaRole;
return roleMap[qtRole];

View File

@ -366,6 +366,7 @@ QAccessible::State QAccessibleComboBox::state() const
s.expandable = true;
s.expanded = isValid() && comboBox()->view()->isVisible();
s.editable = comboBox()->isEditable();
return s;
}