diff --git a/crates/qbz-qt/qml/controls/DiscMetaModal.qml b/crates/qbz-qt/qml/controls/DiscMetaModal.qml index c525193a4..2c12e9e93 100644 --- a/crates/qbz-qt/qml/controls/DiscMetaModal.qml +++ b/crates/qbz-qt/qml/controls/DiscMetaModal.qml @@ -52,6 +52,8 @@ Item { MouseArea { anchors.fill: parent onClicked: if (doc.applying !== true) QbzDiscMeta.close() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -66,7 +68,11 @@ Item { border.color: theme.borderSubtle clip: true - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } // ---- Header --------------------------------------------------- Item { diff --git a/crates/qbz-qt/qml/controls/FolderModals.qml b/crates/qbz-qt/qml/controls/FolderModals.qml index 221027d40..b25432249 100644 --- a/crates/qbz-qt/qml/controls/FolderModals.qml +++ b/crates/qbz-qt/qml/controls/FolderModals.qml @@ -138,6 +138,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzFolderEdit.createClose() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -152,7 +154,11 @@ Item { border.color: theme.borderSubtle // FIRST child: swallows clicks so they never reach the scrim. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: createCol @@ -280,6 +286,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzFolderEdit.editClose() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -293,7 +301,11 @@ Item { border.width: 1 border.color: theme.borderSubtle - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: editCol diff --git a/crates/qbz-qt/qml/controls/LinkResolverModal.qml b/crates/qbz-qt/qml/controls/LinkResolverModal.qml index 4a3ca1efd..82c09a406 100644 --- a/crates/qbz-qt/qml/controls/LinkResolverModal.qml +++ b/crates/qbz-qt/qml/controls/LinkResolverModal.qml @@ -28,6 +28,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzLink.close() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -41,7 +43,11 @@ Item { border.width: 1 border.color: theme.borderSubtle - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: panel diff --git a/crates/qbz-qt/qml/controls/MyQbzModals.qml b/crates/qbz-qt/qml/controls/MyQbzModals.qml index d1b2b7563..139236af4 100644 --- a/crates/qbz-qt/qml/controls/MyQbzModals.qml +++ b/crates/qbz-qt/qml/controls/MyQbzModals.qml @@ -89,6 +89,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzMyQbz.createClose() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } Rectangle { @@ -101,7 +103,11 @@ Item { border.width: 1 border.color: theme.borderSubtle - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: createCol @@ -262,6 +268,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzMyQbz.editClose() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } Rectangle { @@ -274,7 +282,11 @@ Item { border.width: 1 border.color: theme.borderSubtle - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: editCol @@ -428,6 +440,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzMyQbz.mixClose() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } Rectangle { @@ -440,7 +454,11 @@ Item { border.width: 1 border.color: theme.borderSubtle - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: mixCol diff --git a/crates/qbz-qt/qml/controls/OfflineCacheChoiceModal.qml b/crates/qbz-qt/qml/controls/OfflineCacheChoiceModal.qml index bccc1d67d..6eb67ac9a 100644 --- a/crates/qbz-qt/qml/controls/OfflineCacheChoiceModal.qml +++ b/crates/qbz-qt/qml/controls/OfflineCacheChoiceModal.qml @@ -68,6 +68,8 @@ Item { MouseArea { anchors.fill: parent onClicked: root.cancel() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -92,7 +94,11 @@ Item { border.width: 1 border.color: theme.borderSubtle - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: content diff --git a/crates/qbz-qt/qml/controls/PlaylistCreateModal.qml b/crates/qbz-qt/qml/controls/PlaylistCreateModal.qml index e541b1a16..0cbef2fe1 100644 --- a/crates/qbz-qt/qml/controls/PlaylistCreateModal.qml +++ b/crates/qbz-qt/qml/controls/PlaylistCreateModal.qml @@ -168,6 +168,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzPlaylistEdit.closeCreate() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -182,7 +184,11 @@ Item { border.color: theme.borderSubtle // FIRST child: swallows clicks so they never reach the scrim. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: col diff --git a/crates/qbz-qt/qml/controls/PlaylistEditModal.qml b/crates/qbz-qt/qml/controls/PlaylistEditModal.qml index 9a8f4b21f..6d85f9cd7 100644 --- a/crates/qbz-qt/qml/controls/PlaylistEditModal.qml +++ b/crates/qbz-qt/qml/controls/PlaylistEditModal.qml @@ -171,6 +171,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzPlaylistEdit.close() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -185,7 +187,11 @@ Item { border.color: theme.borderSubtle // FIRST child: swallows clicks so they never reach the scrim. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: col diff --git a/crates/qbz-qt/qml/controls/PlaylistImportModal.qml b/crates/qbz-qt/qml/controls/PlaylistImportModal.qml index 134d58a60..d8349612d 100644 --- a/crates/qbz-qt/qml/controls/PlaylistImportModal.qml +++ b/crates/qbz-qt/qml/controls/PlaylistImportModal.qml @@ -90,6 +90,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzPlaylistImport.close() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -106,7 +108,11 @@ Item { border.width: 1 border.color: theme.borderSubtle // Swallow clicks so they never reach the scrim. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } readonly property int contentWidth: card.width - 48 diff --git a/crates/qbz-qt/qml/controls/QbzConfirmModal.qml b/crates/qbz-qt/qml/controls/QbzConfirmModal.qml index cafb75710..c3aee3ce6 100644 --- a/crates/qbz-qt/qml/controls/QbzConfirmModal.qml +++ b/crates/qbz-qt/qml/controls/QbzConfirmModal.qml @@ -129,6 +129,8 @@ Item { MouseArea { anchors.fill: parent onClicked: root._cancel() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -158,7 +160,11 @@ Item { // Swallow clicks so they never reach the scrim (the Slint's empty // panel TouchArea, :1030). - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: panelCol diff --git a/crates/qbz-qt/qml/controls/RipProgressModal.qml b/crates/qbz-qt/qml/controls/RipProgressModal.qml index 2c91f706c..f475920cd 100644 --- a/crates/qbz-qt/qml/controls/RipProgressModal.qml +++ b/crates/qbz-qt/qml/controls/RipProgressModal.qml @@ -40,7 +40,12 @@ Item { Rectangle { anchors.fill: parent color: "#bf000000" - MouseArea { anchors.fill: parent; onClicked: QbzLocal.ripPanel(false) } + MouseArea { + anchors.fill: parent + onClicked: QbzLocal.ripPanel(false) + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } } Rectangle { @@ -54,7 +59,11 @@ Item { border.color: theme.borderSubtle clip: true - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } // ---- Header ----------------------------------------------------- Item { diff --git a/crates/qbz-qt/qml/controls/RipWizardModal.qml b/crates/qbz-qt/qml/controls/RipWizardModal.qml index ac7429f30..7acbee6a2 100644 --- a/crates/qbz-qt/qml/controls/RipWizardModal.qml +++ b/crates/qbz-qt/qml/controls/RipWizardModal.qml @@ -117,7 +117,12 @@ Item { Rectangle { anchors.fill: parent color: "#bf000000" - MouseArea { anchors.fill: parent; onClicked: QbzLocal.ripWizardClose() } + MouseArea { + anchors.fill: parent + onClicked: QbzLocal.ripWizardClose() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } } Rectangle { @@ -131,7 +136,11 @@ Item { border.color: theme.borderSubtle clip: true - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } // ---- Header + step dots ---------------------------------------- Item { diff --git a/crates/qbz-qt/qml/controls/TagEditorModal.qml b/crates/qbz-qt/qml/controls/TagEditorModal.qml index 9b0b8555b..88f38b40d 100644 --- a/crates/qbz-qt/qml/controls/TagEditorModal.qml +++ b/crates/qbz-qt/qml/controls/TagEditorModal.qml @@ -288,6 +288,8 @@ Item { anchors.fill: parent enabled: !root.busy onClicked: root.closeEditor() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -302,7 +304,11 @@ Item { border.color: theme.borderStrong clip: true - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Item { id: header diff --git a/crates/qbz-qt/qml/controls/TrackReplacementModal.qml b/crates/qbz-qt/qml/controls/TrackReplacementModal.qml index 3b29b739b..e5041db9b 100644 --- a/crates/qbz-qt/qml/controls/TrackReplacementModal.qml +++ b/crates/qbz-qt/qml/controls/TrackReplacementModal.qml @@ -78,6 +78,8 @@ Item { MouseArea { anchors.fill: parent onClicked: if (!root.applying) QbzTrackReplace.close() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -93,7 +95,11 @@ Item { clip: true // Swallow clicks so they never reach the scrim. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: panel diff --git a/crates/qbz-qt/qml/settings/DacWizardModal.qml b/crates/qbz-qt/qml/settings/DacWizardModal.qml index df6c30532..755ffca23 100644 --- a/crates/qbz-qt/qml/settings/DacWizardModal.qml +++ b/crates/qbz-qt/qml/settings/DacWizardModal.qml @@ -163,6 +163,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzDacWizard.close() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -178,7 +180,11 @@ Item { border.width: 1 border.color: theme.borderSubtle // Swallow clicks so they never reach the scrim. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } readonly property int contentWidth: card.width - 48 diff --git a/crates/qbz-qt/qml/settings/LibFolderEditModal.qml b/crates/qbz-qt/qml/settings/LibFolderEditModal.qml index 4b4ee05a2..1c951fc35 100644 --- a/crates/qbz-qt/qml/settings/LibFolderEditModal.qml +++ b/crates/qbz-qt/qml/settings/LibFolderEditModal.qml @@ -96,6 +96,8 @@ Item { MouseArea { anchors.fill: parent onClicked: root.close() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -121,7 +123,11 @@ Item { border.color: theme.borderSubtle // Swallow clicks so they never reach the scrim. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { id: body diff --git a/crates/qbz-qt/qml/shell/AppShell.qml b/crates/qbz-qt/qml/shell/AppShell.qml index 52d344502..36d4411b9 100644 --- a/crates/qbz-qt/qml/shell/AppShell.qml +++ b/crates/qbz-qt/qml/shell/AppShell.qml @@ -577,6 +577,8 @@ Rectangle { MouseArea { anchors.fill: parent onClicked: root.textModalOpen = false + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } Rectangle { anchors.centerIn: parent @@ -586,7 +588,11 @@ Rectangle { color: theme.surfaceCard border.width: 1 border.color: theme.borderSubtle - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { anchors.fill: parent anchors.margins: 24 diff --git a/crates/qbz-qt/qml/shell/CustomizeShortcutsModal.qml b/crates/qbz-qt/qml/shell/CustomizeShortcutsModal.qml index e7174e1ba..5ca3aec19 100644 --- a/crates/qbz-qt/qml/shell/CustomizeShortcutsModal.qml +++ b/crates/qbz-qt/qml/shell/CustomizeShortcutsModal.qml @@ -131,6 +131,8 @@ Item { MouseArea { anchors.fill: parent onClicked: root._close() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -160,7 +162,11 @@ Item { border.color: theme.borderSubtle // FIRST child: swallows clicks so they never reach the scrim. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } // --- Header: title + "N modified" badge + X (Slint :208-261) -- // NO keyboard icon here — the editor header has none (trap 6). diff --git a/crates/qbz-qt/qml/shell/KeyboardShortcutsModal.qml b/crates/qbz-qt/qml/shell/KeyboardShortcutsModal.qml index 3dfd212b6..86d2b20ab 100644 --- a/crates/qbz-qt/qml/shell/KeyboardShortcutsModal.qml +++ b/crates/qbz-qt/qml/shell/KeyboardShortcutsModal.qml @@ -127,6 +127,8 @@ Item { MouseArea { anchors.fill: parent onClicked: root._close() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -159,7 +161,11 @@ Item { // FIRST child: swallows clicks so they never reach the scrim // (the Slint's empty panel TouchArea, :137). - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } // --- Header: icon + title + X (Slint :143-184) --------------- Item { diff --git a/crates/qbz-qt/qml/shell/LogViewerModal.qml b/crates/qbz-qt/qml/shell/LogViewerModal.qml index 0c4dd44a7..6045e684b 100644 --- a/crates/qbz-qt/qml/shell/LogViewerModal.qml +++ b/crates/qbz-qt/qml/shell/LogViewerModal.qml @@ -83,6 +83,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzShell.logClose() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -109,7 +111,11 @@ Item { border.color: theme.borderSubtle // Swallow clicks so they never reach the closing backdrop. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } // ANCHORED, not a Column. The body is the only stretch row and its // height depends on which optional rows are mounted (the advanced diff --git a/crates/qbz-qt/qml/shell/ReportIssueModal.qml b/crates/qbz-qt/qml/shell/ReportIssueModal.qml index dd119d046..728d2d4ee 100644 --- a/crates/qbz-qt/qml/shell/ReportIssueModal.qml +++ b/crates/qbz-qt/qml/shell/ReportIssueModal.qml @@ -45,6 +45,8 @@ Item { MouseArea { anchors.fill: parent onClicked: root.open = false + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -69,7 +71,11 @@ Item { border.color: theme.borderSubtle // Swallow clicks so the scrim below does not close the modal. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Column { anchors.fill: parent diff --git a/crates/qbz-qt/qml/shell/WhatsNewModal.qml b/crates/qbz-qt/qml/shell/WhatsNewModal.qml index a62fae90c..f5d0d29dd 100644 --- a/crates/qbz-qt/qml/shell/WhatsNewModal.qml +++ b/crates/qbz-qt/qml/shell/WhatsNewModal.qml @@ -78,6 +78,8 @@ Item { MouseArea { anchors.fill: parent onClicked: QbzAbout.whatsNewClose() + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } } } @@ -101,7 +103,11 @@ Item { border.width: 1 border.color: theme.borderSubtle - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Item { id: stack diff --git a/crates/qbz-qt/qml/shell/WindowsDisclaimerModal.qml b/crates/qbz-qt/qml/shell/WindowsDisclaimerModal.qml index cf48c23b1..4e85d70af 100644 --- a/crates/qbz-qt/qml/shell/WindowsDisclaimerModal.qml +++ b/crates/qbz-qt/qml/shell/WindowsDisclaimerModal.qml @@ -94,7 +94,11 @@ Item { // No click-through close. Unlike the other modals this one is the // first thing a new user sees and says what is not promised; a stray // click on the scrim should not dismiss it. - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } } Rectangle { @@ -115,7 +119,11 @@ Item { border.width: 1 border.color: theme.borderSubtle - MouseArea { anchors.fill: parent } + MouseArea { + anchors.fill: parent + // Wheel-lock (the DiscoverConfigModal rule). + onWheel: function (wheel) { wheel.accepted = true } + } Item { anchors.fill: parent diff --git a/crates/qbz-qt/qml/views/CoverLightbox.qml b/crates/qbz-qt/qml/views/CoverLightbox.qml index e4bd6a450..628638567 100644 --- a/crates/qbz-qt/qml/views/CoverLightbox.qml +++ b/crates/qbz-qt/qml/views/CoverLightbox.qml @@ -56,6 +56,10 @@ Popup { MouseArea { anchors.fill: parent onClicked: root.close() + // Wheel-lock (the DiscoverConfigModal rule): the Popup is not + // `modal`, so nothing grabs the wheel for it — without this the + // page kept scrolling behind the lightbox. + onWheel: function (wheel) { wheel.accepted = true } } // The 90% viewport the artwork is fitted into, so it never touches