From 2f09ed83386b334f0dfb7f376b99739b15e49fc9 Mon Sep 17 00:00:00 2001 From: Aylur Date: Sun, 24 Nov 2024 00:04:07 +0000 Subject: gjs gtk4 support export jsx-runtime --- lib/astal/gtk4/src/widget/slider.vala | 67 +++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 lib/astal/gtk4/src/widget/slider.vala (limited to 'lib/astal/gtk4/src/widget/slider.vala') diff --git a/lib/astal/gtk4/src/widget/slider.vala b/lib/astal/gtk4/src/widget/slider.vala new file mode 100644 index 0000000..f8002ec --- /dev/null +++ b/lib/astal/gtk4/src/widget/slider.vala @@ -0,0 +1,67 @@ +public class Astal.Slider : Gtk.Scale { + private Gtk.EventControllerLegacy controller; + private bool dragging; + + construct { + draw_value = false; + + if (adjustment == null) + adjustment = new Gtk.Adjustment(0,0,0,0,0,0); + + if (max == 0 && min == 0) { + max = 1; + } + + if (step == 0) { + step = 0.05; + } + + add_controller(controller); + controller.event.connect((event) => { + var type = event.get_event_type(); + if (type == Gdk.EventType.BUTTON_PRESS || + type == Gdk.EventType.KEY_PRESS || + type == Gdk.EventType.TOUCH_BEGIN) { + dragging = true; + } + if (type == Gdk.EventType.BUTTON_RELEASE || + type == Gdk.EventType.KEY_RELEASE || + type == Gdk.EventType.TOUCH_END) { + dragging = false; + } + }); + } + + + /** + * Value of this slider. Defaults to `0`. + */ + public double value { + get { return adjustment.value; } + set { if (!dragging) adjustment.value = value; } + } + + /** + * Minimum possible value of this slider. Defaults to `0`. + */ + public double min { + get { return adjustment.lower; } + set { adjustment.lower = value; } + } + + /** + * Maximum possible value of this slider. Defaults to `1`. + */ + public double max { + get { return adjustment.upper; } + set { adjustment.upper = value; } + } + + /** + * Size of step increments. Defaults to `0.05`. + */ + public double step { + get { return adjustment.step_increment; } + set { adjustment.step_increment = value; } + } +} -- cgit v1.2.3 From 5a16cd2809d4d6dfa54c7995966630cefa3fe400 Mon Sep 17 00:00:00 2001 From: Aylur Date: Fri, 20 Dec 2024 23:42:59 +0100 Subject: fix: slider style --- lib/astal/gtk4/src/widget/slider.vala | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'lib/astal/gtk4/src/widget/slider.vala') diff --git a/lib/astal/gtk4/src/widget/slider.vala b/lib/astal/gtk4/src/widget/slider.vala index f8002ec..ca026a2 100644 --- a/lib/astal/gtk4/src/widget/slider.vala +++ b/lib/astal/gtk4/src/widget/slider.vala @@ -3,8 +3,6 @@ public class Astal.Slider : Gtk.Scale { private bool dragging; construct { - draw_value = false; - if (adjustment == null) adjustment = new Gtk.Adjustment(0,0,0,0,0,0); @@ -16,6 +14,7 @@ public class Astal.Slider : Gtk.Scale { step = 0.05; } + controller = new Gtk.EventControllerLegacy(); add_controller(controller); controller.event.connect((event) => { var type = event.get_event_type(); @@ -32,7 +31,6 @@ public class Astal.Slider : Gtk.Scale { }); } - /** * Value of this slider. Defaults to `0`. */ -- cgit v1.2.3