From 7c35251333851471e6c12a3696c230f21b403025 Mon Sep 17 00:00:00 2001 From: Eism Date: Tue, 21 Jan 2025 14:03:48 +0200 Subject: [PATCH 1/4] disable focus when open popup --- .../qml/MuseScore/NotationScene/internal/ElementPopupLoader.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/notation/qml/MuseScore/NotationScene/internal/ElementPopupLoader.qml b/src/notation/qml/MuseScore/NotationScene/internal/ElementPopupLoader.qml index 7af3e4661c800..4a2cb1262d0f9 100644 --- a/src/notation/qml/MuseScore/NotationScene/internal/ElementPopupLoader.qml +++ b/src/notation/qml/MuseScore/NotationScene/internal/ElementPopupLoader.qml @@ -118,6 +118,7 @@ Item { // This is necessary so that popups do not activate navigation in the new section, // but at the same time, when clicking on the component (text input), the focus in popup's window should be activated popup.navigationSection = null + popup.openPolicies = PopupView.NoActivateFocus popup.notationViewNavigationSection = container.notationViewNavigationSection popup.navigationOrderStart = container.navigationOrderStart From ad5122eb51bec404ceda289b2505f08ea67500ca Mon Sep 17 00:00:00 2001 From: Eism Date: Tue, 21 Jan 2025 13:50:52 +0200 Subject: [PATCH 2/4] allow accepting focus for popup --- .../uicomponents/view/popupwindow/popupwindow_qquickview.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.cpp b/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.cpp index f5eb34a2e244a..8c9c4f6bbb888 100644 --- a/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.cpp +++ b/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.cpp @@ -136,6 +136,9 @@ void PopupWindow_QQuickView::forceActiveFocus() return; } + m_view->setFlags(m_view->flags() & (~Qt::WindowDoesNotAcceptFocus)); + m_view->requestActivate(); + QQuickItem* rootObject = m_view->rootObject(); if (!rootObject) { return; From 37553a6bc6ddb4c441bfe97b1fab280f0a5a18fe Mon Sep 17 00:00:00 2001 From: Eism Date: Tue, 21 Jan 2025 14:03:22 +0200 Subject: [PATCH 3/4] automatically activate focus when activating navigation inside a popup --- src/framework/uicomponents/view/popupview.cpp | 11 +++++++++++ src/framework/uicomponents/view/popupview.h | 2 +- .../uicomponents/view/popupwindow/ipopupwindow.h | 1 + .../view/popupwindow/popupwindow_qquickview.cpp | 5 +++++ .../view/popupwindow/popupwindow_qquickview.h | 1 + 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/framework/uicomponents/view/popupview.cpp b/src/framework/uicomponents/view/popupview.cpp index c28f7111c33c3..918e91f7f5eac 100644 --- a/src/framework/uicomponents/view/popupview.cpp +++ b/src/framework/uicomponents/view/popupview.cpp @@ -150,6 +150,17 @@ void PopupView::init() } }); + navigationController()->navigationChanged().onNotify(this, [this]() { + ui::INavigationPanel* navigationPanel = navigationController()->activePanel(); + if (!navigationPanel) { + return; + } + + if (navigationPanel->window() == m_window->qWindow() && !m_window->hasActiveFocus()) { + m_window->forceActiveFocus(); + } + }); + emit windowChanged(); } diff --git a/src/framework/uicomponents/view/popupview.h b/src/framework/uicomponents/view/popupview.h index a2973c7d3598a..8ae8254dcc239 100644 --- a/src/framework/uicomponents/view/popupview.h +++ b/src/framework/uicomponents/view/popupview.h @@ -93,7 +93,7 @@ class PopupView : public QObject, public QQmlParserStatus, public Injectable, pu public: Inject mainWindow = { this }; Inject uiConfiguration = { this }; - Inject navigationController= { this }; + Inject navigationController = { this }; public: diff --git a/src/framework/uicomponents/view/popupwindow/ipopupwindow.h b/src/framework/uicomponents/view/popupwindow/ipopupwindow.h index d5dddc2fb9b71..a92a4e3f8f448 100644 --- a/src/framework/uicomponents/view/popupwindow/ipopupwindow.h +++ b/src/framework/uicomponents/view/popupwindow/ipopupwindow.h @@ -61,6 +61,7 @@ class IPopupWindow : public QObject virtual void setPosition(const QPoint& position) const = 0; + virtual bool hasActiveFocus() const = 0; virtual void forceActiveFocus() = 0; virtual void setOnHidden(const std::function& callback) = 0; diff --git a/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.cpp b/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.cpp index 8c9c4f6bbb888..f30ce60a3ed5c 100644 --- a/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.cpp +++ b/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.cpp @@ -247,6 +247,11 @@ void PopupWindow_QQuickView::setPosition(const QPoint& position) const m_view->setPosition(position); } +bool PopupWindow_QQuickView::hasActiveFocus() const +{ + return m_view && m_view->activeFocusItem() != nullptr; +} + void PopupWindow_QQuickView::setOnHidden(const std::function& callback) { m_onHidden = callback; diff --git a/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.h b/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.h index 08374423421da..91bf30637be9b 100644 --- a/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.h +++ b/src/framework/uicomponents/view/popupwindow/popupwindow_qquickview.h @@ -68,6 +68,7 @@ class PopupWindow_QQuickView : public IPopupWindow, public muse::Injectable, pub void setPosition(const QPoint& position) const override; + bool hasActiveFocus() const override; void forceActiveFocus() override; void setOnHidden(const std::function& callback) override; From 940352b2e38679dd428240f0a771fce7fb40cb43 Mon Sep 17 00:00:00 2001 From: Eism Date: Wed, 22 Jan 2025 10:12:45 +0200 Subject: [PATCH 4/4] fixed the order --- src/notation/view/internal/dynamicpopupmodel.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/notation/view/internal/dynamicpopupmodel.cpp b/src/notation/view/internal/dynamicpopupmodel.cpp index cc309002cb6e0..756a0aac82219 100644 --- a/src/notation/view/internal/dynamicpopupmodel.cpp +++ b/src/notation/view/internal/dynamicpopupmodel.cpp @@ -64,15 +64,15 @@ static const QList > DYN_POPUP_PAGES = { { DynamicType::PPPPPP, 74, 2.0, DynamicPopupModel::Dynamic }, { DynamicType::FFFFFF, 60, 2.5, DynamicPopupModel::Dynamic }, }, - { // Page 6 + { // Page 6 - Hairpins + { DynamicType::OTHER, 62, 0.0, DynamicPopupModel::Crescendo }, + { DynamicType::OTHER, 62, 0.0, DynamicPopupModel::Decrescendo }, + }, + { // Page 7 { DynamicType::PPPPP, 64, 2.0, DynamicPopupModel::Dynamic }, { DynamicType::PPPP, 52, 2.0, DynamicPopupModel::Dynamic }, { DynamicType::PPP, 44, 2.0, DynamicPopupModel::Dynamic }, }, - { // Page 7 - Hairpins - { DynamicType::OTHER, 62, 0.0, DynamicPopupModel::Crescendo }, - { DynamicType::OTHER, 62, 0.0, DynamicPopupModel::Decrescendo }, - }, }; DynamicPopupModel::DynamicPopupModel(QObject* parent)