mirror of
https://github.com/end-4/dots-hyprland.git
synced 2026-06-05 23:09:26 -05:00
57 lines
1.4 KiB
QML
57 lines
1.4 KiB
QML
import QtQuick
|
|
|
|
MouseArea { // Right side | scroll to change volume
|
|
id: root
|
|
|
|
signal scrollUp(delta: int)
|
|
signal scrollDown(delta: int)
|
|
signal movedAway()
|
|
|
|
property bool hovered: false
|
|
property real lastScrollX: 0
|
|
property real lastScrollY: 0
|
|
property bool trackingScroll: false
|
|
property real moveThreshold: 20
|
|
|
|
acceptedButtons: Qt.LeftButton
|
|
hoverEnabled: true
|
|
|
|
onEntered: {
|
|
root.hovered = true;
|
|
}
|
|
|
|
onExited: {
|
|
root.hovered = false;
|
|
root.trackingScroll = false;
|
|
}
|
|
|
|
onWheel: event => {
|
|
if (event.angleDelta.y < 0)
|
|
root.scrollDown(event.angleDelta.y);
|
|
else if (event.angleDelta.y > 0)
|
|
root.scrollUp(event.angleDelta.y);
|
|
// Store the mouse position and start tracking
|
|
root.lastScrollX = event.x;
|
|
root.lastScrollY = event.y;
|
|
root.trackingScroll = true;
|
|
}
|
|
|
|
onPositionChanged: mouse => {
|
|
if (root.trackingScroll) {
|
|
const dx = mouse.x - root.lastScrollX;
|
|
const dy = mouse.y - root.lastScrollY;
|
|
if (Math.sqrt(dx * dx + dy * dy) > root.moveThreshold) {
|
|
root.movedAway();
|
|
root.trackingScroll = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
onContainsMouseChanged: {
|
|
if (!root.containsMouse && root.trackingScroll) {
|
|
root.movedAway();
|
|
root.trackingScroll = false;
|
|
}
|
|
}
|
|
}
|