diff --git a/src/engraving/dom/navigate.cpp b/src/engraving/dom/navigate.cpp index 94e3b1d2ea9f..8cf2c2bf9927 100644 --- a/src/engraving/dom/navigate.cpp +++ b/src/engraving/dom/navigate.cpp @@ -33,6 +33,7 @@ #include "segment.h" #include "spanner.h" #include "staff.h" +#include "soundflag.h" #include "guitarbend.h" using namespace mu; @@ -834,6 +835,11 @@ EngravingItem* Score::nextElement() case ElementType::LAYOUT_BREAK: { staffId = 0; // otherwise it will equal -1, which breaks the navigation } + case ElementType::SOUND_FLAG: + if (EngravingItem* parent = toSoundFlag(e)->parentItem()) { + return parent; + } + break; default: break; } diff --git a/src/engraving/dom/segment.cpp b/src/engraving/dom/segment.cpp index 003747b7e1c6..cbd67f7b93f4 100644 --- a/src/engraving/dom/segment.cpp +++ b/src/engraving/dom/segment.cpp @@ -1921,6 +1921,12 @@ EngravingItem* Segment::nextElement(staff_idx_t activeStaff) if (!m_annotations.empty()) { EngravingItem* next = firstAnnotation(seg, activeStaff); if (next) { + if (next->isStaffText()) { + if (SoundFlag* soundFlag = toStaffText(next)->soundFlag()) { + return soundFlag; + } + } + return next; } } @@ -1983,6 +1989,7 @@ EngravingItem* Segment::prevElement(staff_idx_t activeStaff) case ElementType::FRET_DIAGRAM: case ElementType::TEMPO_TEXT: case ElementType::STAFF_TEXT: + case ElementType::SOUND_FLAG: case ElementType::SYSTEM_TEXT: case ElementType::TRIPLET_FEEL: case ElementType::PLAYTECH_ANNOTATION: @@ -1999,6 +2006,12 @@ EngravingItem* Segment::prevElement(staff_idx_t activeStaff) case ElementType::INSTRUMENT_CHANGE: case ElementType::HARP_DIAGRAM: case ElementType::STICKING: { + if (e->isStaffText()) { + if (SoundFlag* soundFlag = toStaffText(e)->soundFlag()) { + return soundFlag; + } + } + EngravingItem* prev = nullptr; if (e->explicitParent() == this) { prev = prevAnnotation(e); diff --git a/src/playback/qml/MuseScore/Playback/SoundFlagPopup.qml b/src/playback/qml/MuseScore/Playback/SoundFlagPopup.qml index 85ccbf4b920e..13189686fdeb 100644 --- a/src/playback/qml/MuseScore/Playback/SoundFlagPopup.qml +++ b/src/playback/qml/MuseScore/Playback/SoundFlagPopup.qml @@ -75,6 +75,15 @@ StyledPopupView { spacing: 6 + NavigationPanel { + id: navPanel + name: "SoundFlagSettings" + direction: NavigationPanel.Vertical + section: root.notationViewNavigationSection + order: root.navigationOrderStart + accessible.name: qsTrc("playback", "Sound flag settings") + } + StyledIconLabel { Layout.preferredWidth: 24 Layout.preferredHeight: width @@ -90,6 +99,18 @@ StyledPopupView { text: soundFlagModel.title font: ui.theme.largeBodyBoldFont horizontalAlignment: Text.AlignLeft + + NavigationControl { + name: "SoundFlagTitle" + enabled: titleLabel.enabled && titleLabel.visible + panel: navPanel + + order: 1 + + accessible.role: MUAccessible.StaticText + accessible.visualItem: titleLabel + accessible.name: titleLabel.text + } } MenuButton { @@ -98,14 +119,9 @@ StyledPopupView { menuModel: soundFlagModel.contextMenuModel - navigation.panel: NavigationPanel { - id: menuNavPanel - name: "SoundFlagMenu" - direction: NavigationPanel.Vertical - section: root.notationViewNavigationSection - order: museSoundsParams.navigationPanelOrderEnd + 1 - accessible.name: qsTrc("notation", "Sound flag menu") - } + navigation.panel: navPanel + navigation.order: 2 + navigation.accessible.name: qsTrc("playback", "Sound flag menu") onHandleMenuItem: function(itemId) { soundFlagModel.handleContextMenuItem(itemId) @@ -123,7 +139,7 @@ StyledPopupView { visible: soundFlagModel.inited navigationPanelSection: root.notationViewNavigationSection - navigationPanelOrderStart: root.navigationOrderStart + navigationPanelOrderStart: navPanel.order + 1 } } } diff --git a/src/playback/qml/MuseScore/Playback/internal/SoundFlag/ParamsGridView.qml b/src/playback/qml/MuseScore/Playback/internal/SoundFlag/ParamsGridView.qml index 11800fed7f1c..e6e0ca89cc91 100644 --- a/src/playback/qml/MuseScore/Playback/internal/SoundFlag/ParamsGridView.qml +++ b/src/playback/qml/MuseScore/Playback/internal/SoundFlag/ParamsGridView.qml @@ -100,6 +100,7 @@ Column { Layout.preferredWidth: (gridView.width - gridView.rowSpacing) / 2 Layout.preferredHeight: implicitHeight + text: modelData["name"] accentButton: root.selectionModel.indexOf(modelData["code"]) !== -1 drawFocusBorderInsideRect: true @@ -116,6 +117,8 @@ Column { } } + accessible.name: text + "; " + (accentButton ? qsTrc("global", "On") : qsTrc("global", "Off")) + onClicked: { root.toggleParamRequested(modelData["code"]) } @@ -123,7 +126,7 @@ Column { contentItem: StyledTextLabel { width: button.width - 24 // 12px padding on each side - text: modelData["name"] + text: button.text font: ui.theme.bodyFont } }