diff options
author | Aylur <[email protected]> | 2024-05-19 02:39:53 +0200 |
---|---|---|
committer | Aylur <[email protected]> | 2024-05-19 02:39:53 +0200 |
commit | 1425b396b08f0e91d45bbd0f92b1309115c7c870 (patch) | |
tree | 8af1a899a14d8a01a9ef50e248c077b48aed25bc /src/widget/button.vala |
init 0.1.0
Diffstat (limited to 'src/widget/button.vala')
-rw-r--r-- | src/widget/button.vala | 35 |
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); + }); + } +} +} |