From 3d2171c850112ca37730fe6a8ed7c67192876dfc Mon Sep 17 00:00:00 2001 From: Aylur Date: Thu, 31 Aug 2023 23:31:39 +0200 Subject: [PATCH] fix: trigger slider by keyboard arrows (fixes #72) --- src/widgets/slider.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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