From 977a59afb32553c0990a3964404652e9606428dc Mon Sep 17 00:00:00 2001
From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
Date: Sat, 29 Mar 2025 18:13:21 +1100
Subject: sidebar: allow seeking
---
src/modules/sidebar/dashboard.tsx | 2 +-
src/modules/sidebar/modules/media.tsx | 2 +-
src/modules/sidebar/modules/streams.tsx | 1 -
src/widgets/slider.tsx | 15 +++++++++++++--
4 files changed, 15 insertions(+), 5 deletions(-)
(limited to 'src')
diff --git a/src/modules/sidebar/dashboard.tsx b/src/modules/sidebar/dashboard.tsx
index c38d584..bad4695 100644
--- a/src/modules/sidebar/dashboard.tsx
+++ b/src/modules/sidebar/dashboard.tsx
@@ -108,7 +108,7 @@ const Media = ({ player }: { player: AstalMpris.Player | null }) => {
label=""
/>
-
+ player?.set_position(v * player.length)} />
diff --git a/src/modules/sidebar/modules/media.tsx b/src/modules/sidebar/modules/media.tsx
index 4af388b..4872f9e 100644
--- a/src/modules/sidebar/modules/media.tsx
+++ b/src/modules/sidebar/modules/media.tsx
@@ -60,7 +60,7 @@ const Player = ({ player }: { player: AstalMpris.Player }) => {
{bind(player, "coverArt").as(a => (a ? : ))}
-
+ player.set_position(v * player.length)} />
diff --git a/src/modules/sidebar/modules/streams.tsx b/src/modules/sidebar/modules/streams.tsx
index 5eb0cf7..16812fd 100644
--- a/src/modules/sidebar/modules/streams.tsx
+++ b/src/modules/sidebar/modules/streams.tsx
@@ -27,7 +27,6 @@ const Stream = ({ stream, playing }: IStream) => (
showFillLevel
restrictToFillLevel={false}
fillLevel={2 / 3}
- cursor="pointer"
value={bind(stream, "volume").as(v => v * (2 / 3))}
setup={self => self.connect("value-changed", () => stream.set_volume(self.value * 1.5))}
/>
diff --git a/src/widgets/slider.tsx b/src/widgets/slider.tsx
index fb219bd..c047d5f 100644
--- a/src/widgets/slider.tsx
+++ b/src/widgets/slider.tsx
@@ -1,8 +1,14 @@
import { bind, type Binding } from "astal";
-import { Gtk } from "astal/gtk3";
+import { Gdk, Gtk, type Widget } from "astal/gtk3";
import type cairo from "cairo";
-export default ({ value }: { value: Binding }) => (
+export default ({
+ value,
+ onChange,
+}: {
+ value: Binding;
+ onChange?: (self: Widget.DrawingArea, value: number) => void;
+}) => (
}) => (
cr.arc(radius, height - radius, radius, halfPi, Math.PI); // Bottom left
cr.fill();
});
+
+ self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK);
+ self.connect("button-press-event", (_, event: Gdk.Event) =>
+ onChange?.(self, event.get_coords()[1] / self.get_allocated_width())
+ );
}}
/>
);
--
cgit v1.2.3-freya