diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/Widgets/DankScrollbar.qml')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/dms/Widgets/DankScrollbar.qml | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/Widgets/DankScrollbar.qml b/raveos-hyprland-theme/theme-data/dms/Widgets/DankScrollbar.qml new file mode 100644 index 0000000..c5d2d70 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Widgets/DankScrollbar.qml @@ -0,0 +1,46 @@ +import QtQuick +import QtQuick.Controls +import qs.Common + +ScrollBar { + id: scrollbar + + property var targetFlickable: null + readonly property var _target: targetFlickable ?? parent + + property bool _scrollBarActive: false + property alias hideTimer: hideScrollBarTimer + property bool _isParentMoving: _target && (_target.moving || _target.flicking || _target.isMomentumActive) + property bool _shouldShow: pressed || hovered || active || _isParentMoving || _scrollBarActive + + policy: (_target && _target.contentHeight > _target.height) ? ScrollBar.AsNeeded : ScrollBar.AlwaysOff + minimumSize: 0.08 + implicitWidth: 10 + interactive: true + hoverEnabled: true + z: 1000 + opacity: (policy !== ScrollBar.AlwaysOff && _shouldShow) ? 1.0 : 0.0 + visible: policy !== ScrollBar.AlwaysOff + + Behavior on opacity { + NumberAnimation { + duration: 160 + easing.type: Easing.OutQuad + } + } + + contentItem: Rectangle { + implicitWidth: 6 + radius: width / 2 + color: scrollbar.pressed ? Theme.primary : scrollbar._shouldShow ? Theme.outline : Theme.outlineMedium + opacity: scrollbar.pressed ? 1.0 : scrollbar._shouldShow ? 1.0 : 0.6 + } + + background: Item {} + + Timer { + id: hideScrollBarTimer + interval: 1200 + onTriggered: scrollbar._scrollBarActive = false + } +} |