summaryrefslogtreecommitdiff
path: root/src/widget/button.vala
diff options
context:
space:
mode:
authorAylur <[email protected]>2024-05-19 02:39:53 +0200
committerAylur <[email protected]>2024-05-19 02:39:53 +0200
commit1425b396b08f0e91d45bbd0f92b1309115c7c870 (patch)
tree8af1a899a14d8a01a9ef50e248c077b48aed25bc /src/widget/button.vala
init 0.1.0
Diffstat (limited to 'src/widget/button.vala')
-rw-r--r--src/widget/button.vala35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/widget/button.vala b/src/widget/button.vala
new file mode 100644
index 0000000..601733f
--- /dev/null
+++ b/src/widget/button.vala
@@ -0,0 +1,35 @@
+namespace Astal {
+public class Button : Gtk.Button {
+ public signal void hover (Gdk.EventCrossing event);
+ public signal void hover_lost (Gdk.EventCrossing event);
+ public signal void click (Gdk.EventButton event);
+ public signal void click_release (Gdk.EventButton event);
+
+ construct {
+ add_events(Gdk.EventMask.SCROLL_MASK);
+ add_events(Gdk.EventMask.SMOOTH_SCROLL_MASK);
+
+ enter_notify_event.connect((self, event) => {
+ if (event.window == self.get_window() &&
+ event.detail != Gdk.NotifyType.INFERIOR) {
+ hover(event);
+ }
+ });
+
+ leave_notify_event.connect((self, event) => {
+ if (event.window == self.get_window() &&
+ event.detail != Gdk.NotifyType.INFERIOR) {
+ hover_lost(event);
+ }
+ });
+
+ button_press_event.connect((event) => {
+ click(event);
+ });
+
+ button_release_event.connect((event) => {
+ click_release(event);
+ });
+ }
+}
+}