diff --git a/src/framework/uicomponents/qml/Muse/UiComponents/FlatButton.qml b/src/framework/uicomponents/qml/Muse/UiComponents/FlatButton.qml index 14816bb3a0183..f4c6fb91f99d0 100644 --- a/src/framework/uicomponents/qml/Muse/UiComponents/FlatButton.qml +++ b/src/framework/uicomponents/qml/Muse/UiComponents/FlatButton.qml @@ -103,8 +103,7 @@ FocusScope { } signal clicked(var mouse) - // There are intentionally no "forwarded" signals here from the MouseArea, like `pressAndHold` - // See https://github.com/musescore/MuseScore/issues/16012#issuecomment-1399656043 + signal pressAndHold(var mouseEvent) objectName: root.text @@ -313,6 +312,14 @@ FocusScope { ui.tooltip.hide(root, true) } + onPressAndHold: function(mouseEvent) { + // Set 'accepted' to false (it is true by default) to not supress the click event. + // If a handler consumes this event, it should set 'accepted' to true. + mouseEvent.accepted = false + + root.pressAndHold(mouseEvent) + } + onContainsMouseChanged: { if (!Boolean(root.toolTipTitle) || root.toolTipShowLocked) { return diff --git a/src/framework/uicomponents/qml/Muse/UiComponents/StyledToolBarItem.qml b/src/framework/uicomponents/qml/Muse/UiComponents/StyledToolBarItem.qml index c418f0f6ee81e..7022c40a2e40b 100644 --- a/src/framework/uicomponents/qml/Muse/UiComponents/StyledToolBarItem.qml +++ b/src/framework/uicomponents/qml/Muse/UiComponents/StyledToolBarItem.qml @@ -103,18 +103,15 @@ FlatButton { } } - Connections { - target: root.mouseArea - - enabled: root.hasMenu && !menuLoader.isMenuOpened + onPressAndHold: function(mouseEvent) { + if (menuLoader.isMenuOpened || !root.hasMenu) { + return + } - function onPressAndHold() { - if (menuLoader.isMenuOpened || !root.hasMenu) { - return - } + // consume event and suppress the click event + mouseEvent.accepted = true - root.toggleMenuOpened() - } + root.toggleMenuOpened() } Canvas { diff --git a/src/notation/qml/MuseScore/NotationScene/NoteInputBar.qml b/src/notation/qml/MuseScore/NotationScene/NoteInputBar.qml index ec3a6d3adbc7d..74e6e91769c3f 100644 --- a/src/notation/qml/MuseScore/NotationScene/NoteInputBar.qml +++ b/src/notation/qml/MuseScore/NotationScene/NoteInputBar.qml @@ -155,20 +155,15 @@ Item { } } - Connections { - target: btn.mouseArea - - // Make sure we only connect to `pressAndHold` if necessary - // See https://github.com/musescore/MuseScore/issues/16012 - enabled: btn.hasMenu && !menuLoader.isMenuOpened + onPressAndHold: function(mouseEvent) { + if (menuLoader.isMenuOpened || !btn.hasMenu) { + return + } - function onPressAndHold() { - if (menuLoader.isMenuOpened || !btn.hasMenu) { - return - } + // consume event and suppress the click event + mouseEvent.accepted = true - btn.toggleMenuOpened() - } + btn.toggleMenuOpened() } StyledMenuLoader {