From 1425b396b08f0e91d45bbd0f92b1309115c7c870 Mon Sep 17 00:00:00 2001 From: Aylur Date: Sun, 19 May 2024 02:39:53 +0200 Subject: init 0.1.0 --- src/widget/eventbox.vala | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/widget/eventbox.vala (limited to 'src/widget/eventbox.vala') diff --git a/src/widget/eventbox.vala b/src/widget/eventbox.vala new file mode 100644 index 0000000..de04a32 --- /dev/null +++ b/src/widget/eventbox.vala @@ -0,0 +1,39 @@ +namespace Astal { +public class EventBox : Gtk.EventBox { + 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) { + this.set_state_flags(Gtk.StateFlags.PRELIGHT, false); + hover(event); + } + }); + + leave_notify_event.connect((self, event) => { + if (event.window == self.get_window() && + event.detail != Gdk.NotifyType.INFERIOR) { + this.unset_state_flags(Gtk.StateFlags.PRELIGHT); + hover_lost(event); + } + }); + + button_press_event.connect((event) => { + // TODO: abstract event for easier use + click(event); + }); + + button_release_event.connect((event) => { + // TODO: abstract event for easier use + click_release(event); + }); + } +} +} -- cgit v1.2.3