From b45221c15615a40a3005c705ceab2fb015e31bad Mon Sep 17 00:00:00 2001 From: anatoly-os Date: Tue, 17 Sep 2019 19:43:42 +0200 Subject: [PATCH] Merge pull request #5326 from MarcSabatella/293228-palette-search fix #293228: accessibility for QML palettes --- mscore/musescore.cpp | 12 +++++------- mscore/palette/palettemodel.cpp | 8 +++++++- mscore/qml/palettes/Palette.qml | 5 ++++- mscore/qml/palettes/PalettesWidgetHeader.qml | 3 +++ 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/mscore/musescore.cpp b/mscore/musescore.cpp index 28382480fb5e9..96260169e9d93 100644 --- a/mscore/musescore.cpp +++ b/mscore/musescore.cpp @@ -38,6 +38,7 @@ #include "palette.h" #include "palettebox.h" #include "palette/palettemodel.h" +#include "palette/palettewidget.h" #include "palette/paletteworkspace.h" #include "libmscore/part.h" #include "libmscore/drumset.h" @@ -5870,13 +5871,10 @@ void MuseScore::cmd(QAction* a) return; } if (cmdn == "palette-search") { - PaletteBox* pb = getPaletteBox(); - QLineEdit* sb = pb->searchBox(); - sb->setFocus(); - if (pb->noSelection()) - pb->setKeyboardNavigation(false); - else - pb->setKeyboardNavigation(true); + // TODO: use new search box, or rename command to just "palette" + showPalette(true); + if (paletteWidget) + paletteWidget->setFocus(); return; } if (cmdn == "apply-current-palette-element") { diff --git a/mscore/palette/palettemodel.cpp b/mscore/palette/palettemodel.cpp index 946253fb82edb..916409d55074c 100644 --- a/mscore/palette/palettemodel.cpp +++ b/mscore/palette/palettemodel.cpp @@ -25,6 +25,7 @@ #include "libmscore/select.h" #include "palettetree.h" #include "preferences.h" +#include "scoreaccessibility.h" namespace Ms { //--------------------------------------------------------- @@ -250,8 +251,12 @@ QVariant PaletteTreeModel::data(const QModelIndex& index, int role) const switch (role) { case Qt::DisplayRole: // TODO don't display cell names in palettes case Qt::ToolTipRole: - case Qt::AccessibleTextRole: return qApp->translate("Palette", cell->name.toUtf8()); + case Qt::AccessibleTextRole: { + QString name = qApp->translate("Palette", cell->name.toUtf8()); + ScoreAccessibility::makeReadable(name); + return name; + } case Qt::DecorationRole: { qreal extraMag = 1.0; if (const PalettePanel* pp = iptrToPalettePanel(index.internalPointer())) @@ -455,6 +460,7 @@ QHash PaletteTreeModel::roleNames() const roles[EditableRole] = "editable"; roles[PaletteExpandedRole] = "expanded"; roles[CellActiveRole] = "cellActive"; + roles[Qt::AccessibleTextRole] = "accessibleText"; return roles; } diff --git a/mscore/qml/palettes/Palette.qml b/mscore/qml/palettes/Palette.qml index 9b768b7632831..e4100b37d6cb9 100644 --- a/mscore/qml/palettes/Palette.qml +++ b/mscore/qml/palettes/Palette.qml @@ -353,7 +353,10 @@ GridView { ToolTip.delay: Qt.styleHints.mousePressAndHoldInterval ToolTip.text: toolTip ? toolTip : "" - text: toolTip ? toolTip : "" + text: model.accessibleText + // TODO: these may be needed for support of other screenreaders + //Accessible.name: model.accessibleText + //Accessible.description: model.accessibleText onClicked: { forceActiveFocus(); diff --git a/mscore/qml/palettes/PalettesWidgetHeader.qml b/mscore/qml/palettes/PalettesWidgetHeader.qml index a3924cc71008d..e70d3d40b97a9 100644 --- a/mscore/qml/palettes/PalettesWidgetHeader.qml +++ b/mscore/qml/palettes/PalettesWidgetHeader.qml @@ -46,6 +46,9 @@ Item { anchors.right: parent.right placeholderText: qsTr("Search") + //TODO: in the future we may wish these values to differ + //Accessible.name: qsTr("Search") + Accessible.name: placeholderText font: globalStyle.font color: globalStyle.text