From e046d9428473fba74e4508776063904ec786aab4 Mon Sep 17 00:00:00 2001 From: Aylur Date: Sun, 14 Jul 2024 16:32:12 +0200 Subject: feat(slider): dragged signal --- gjs/src/widgets.ts | 4 +++- src/widget/slider.vala | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/gjs/src/widgets.ts b/gjs/src/widgets.ts index 29c0044..bf5ac50 100644 --- a/gjs/src/widgets.ts +++ b/gjs/src/widgets.ts @@ -92,7 +92,9 @@ export type ScrollableProps = ConstructProps export const Slider = astalify(Astal.Slider) -export type SliderProps = ConstructProps +export type SliderProps = ConstructProps // TODO: Stack diff --git a/src/widget/slider.vala b/src/widget/slider.vala index e41e2e8..4fa1216 100644 --- a/src/widget/slider.vala +++ b/src/widget/slider.vala @@ -6,6 +6,9 @@ public class Slider : Gtk.Scale { set { orientation = value ? Gtk.Orientation.VERTICAL : Gtk.Orientation.HORIZONTAL; } } + // emitted when the user drags the slider + public signal void dragged (); + construct { if (adjustment == null) adjustment = new Gtk.Adjustment(0,0,0,0,0,0); @@ -30,13 +33,18 @@ public class Slider : Gtk.Scale { value += step; dragging = false; }); + + value_changed.connect(() => { + if (dragging) + dragged(); + }); } public bool dragging { get; private set; } public double value { get { return adjustment.value; } - set { adjustment.value = value; } + set { if (!dragging) adjustment.value = value; } } public double min { -- cgit v1.2.3