diff --git a/src/widgets/slider.ts b/src/widgets/slider.ts index 16602d8..f902b01 100644 --- a/src/widgets/slider.ts +++ b/src/widgets/slider.ts @@ -1,7 +1,7 @@ import GObject from 'gi://GObject'; import Gtk from 'gi://Gtk?version=3.0'; import { runCmd } from '../utils.js'; -import { EventButton, EventScroll } from 'gi-types/gdk3'; +import { EventButton, EventScroll, EventKey } from 'gi-types/gdk3'; import { Command } from './shared.js'; interface Params { @@ -53,7 +53,7 @@ export default class AgsSlider extends Gtk.Scale { this.onChange = onChange; this.adjustment.connect('notify::value', ({ value }, event) => { - if (!this._dragging) + if (!this.dragging) return; typeof this.onChange === 'function' @@ -67,7 +67,7 @@ export default class AgsSlider extends Gtk.Scale { get value() { return this.adjustment.value; } set value(value: number) { - if (this._dragging) + if (this.dragging) return; this.adjustment.value = value; @@ -105,6 +105,16 @@ export default class AgsSlider extends Gtk.Scale { return super.vfunc_button_press_event(event); } + vfunc_key_press_event(event: EventKey): boolean { + this.dragging = true; + return super.vfunc_key_press_event(event); + } + + vfunc_key_release_event(event: EventKey): boolean { + this.dragging = false; + return super.vfunc_key_release_event(event); + } + vfunc_scroll_event(event: EventScroll): boolean { this.dragging = true; event.delta_y > 0