diff options
author | Aylur <[email protected]> | 2024-12-25 02:38:27 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2024-12-25 02:38:27 +0100 |
commit | 37f0d24178a1516eb45eb639640e07c5dc3b8e81 (patch) | |
tree | 28ff8d1030be1919c00152e99b4ab9c229b0f01b /lib/astal/gtk4/src/widget/slider.vala | |
parent | 553b2186db47fb34602d4e949c1e40a018238d7a (diff) | |
parent | 0f2fefd2053203e1bfe4d66eb4e37dea07369890 (diff) |
Merge pull request #196 from Aylur/feat/jsx-gtk4
Add jsx support for gtk4
Diffstat (limited to 'lib/astal/gtk4/src/widget/slider.vala')
-rw-r--r-- | lib/astal/gtk4/src/widget/slider.vala | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/astal/gtk4/src/widget/slider.vala b/lib/astal/gtk4/src/widget/slider.vala new file mode 100644 index 0000000..ca026a2 --- /dev/null +++ b/lib/astal/gtk4/src/widget/slider.vala @@ -0,0 +1,65 @@ +public class Astal.Slider : Gtk.Scale { + private Gtk.EventControllerLegacy controller; + private bool dragging; + + construct { + 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; + } + + controller = new Gtk.EventControllerLegacy(); + 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; } + } +} |