diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/widget/button.vala | 80 | ||||
-rw-r--r-- | src/widget/eventbox.vala | 61 |
2 files changed, 45 insertions, 96 deletions
diff --git a/src/widget/button.vala b/src/widget/button.vala index 05ae02f..036bc8e 100644 --- a/src/widget/button.vala +++ b/src/widget/button.vala @@ -11,66 +11,23 @@ public class Button : Gtk.Button { add_events(Gdk.EventMask.SMOOTH_SCROLL_MASK); enter_notify_event.connect((self, event) => { - if (event.window == self.get_window() && - event.detail != Gdk.NotifyType.INFERIOR) { - var hover_event = HoverEvent(); - hover_event.lost = false; - hover_event.time = event.time; - hover_event.x = event.x; - hover_event.y = event.y; - hover_event.modifier = event.state; - hover_event.mode = event.mode; - hover_event.detail = event.detail; - hover(hover_event); - } + hover(HoverEvent(event) { lost = false }); }); leave_notify_event.connect((self, event) => { - if (event.window == self.get_window() && - event.detail != Gdk.NotifyType.INFERIOR) { - var hover_event = HoverEvent(); - hover_event.lost = true; - hover_event.time = event.time; - hover_event.x = event.x; - hover_event.y = event.y; - hover_event.modifier = event.state; - hover_event.mode = event.mode; - hover_event.detail = event.detail; - hover_lost(hover_event); - } + hover_lost(HoverEvent(event) { lost = true }); }); button_press_event.connect((event) => { - var click_event = ClickEvent(); - click_event.release = false; - click_event.time = event.time; - click_event.x = event.x; - click_event.y = event.y; - click_event.button = (MouseButton)event.button; - click_event.modifier = event.state; - click(click_event); + click(ClickEvent(event) { release = false }); }); button_release_event.connect((event) => { - var click_event = ClickEvent(); - click_event.release = true; - click_event.x = event.x; - click_event.y = event.y; - click_event.button = (MouseButton)event.button; - click_event.modifier = event.state; - click_release(click_event); + click_release(ClickEvent(event) { release = true }); }); scroll_event.connect((event) => { - var scroll_event = ScrollEvent(); - scroll_event.time = event.time; - scroll_event.x = event.x; - scroll_event.y = event.y; - scroll_event.modifier = event.state; - scroll_event.direction = event.direction; - scroll_event.delta_x = event.delta_x; - scroll_event.delta_y = event.delta_y; - scroll(scroll_event); + scroll(ScrollEvent(event)); }); } } @@ -93,6 +50,14 @@ public struct ClickEvent { double y; Gdk.ModifierType modifier; MouseButton button; + + public ClickEvent(Gdk.EventButton event) { + this.time = event.time; + this.x = event.x; + this.y = event.y; + this.button = (MouseButton)event.button; + this.modifier = event.state; + } } public struct HoverEvent { @@ -103,6 +68,15 @@ public struct HoverEvent { Gdk.ModifierType modifier; Gdk.CrossingMode mode; Gdk.NotifyType detail; + + public HoverEvent(Gdk.EventCrossing event) { + this.time = event.time; + this.x = event.x; + this.y = event.y; + this.modifier = event.state; + this.mode = event.mode; + this.detail = event.detail; + } } public struct ScrollEvent { @@ -113,5 +87,15 @@ public struct ScrollEvent { Gdk.ScrollDirection direction; double delta_x; double delta_y; + + public ScrollEvent(Gdk.EventScroll event) { + this.time = event.time; + this.x = event.x; + this.y = event.y; + this.modifier = event.state; + this.direction = event.direction; + this.delta_x = event.delta_x; + this.delta_y = event.delta_y; + } } } diff --git a/src/widget/eventbox.vala b/src/widget/eventbox.vala index bee7cbc..6b715cc 100644 --- a/src/widget/eventbox.vala +++ b/src/widget/eventbox.vala @@ -20,15 +20,7 @@ public class EventBox : Gtk.EventBox { if (event.window == self.get_window() && event.detail != Gdk.NotifyType.INFERIOR) { this.set_state_flags(Gtk.StateFlags.PRELIGHT, false); - var hover_event = HoverEvent(); - hover_event.lost = false; - hover_event.time = event.time; - hover_event.x = event.x; - hover_event.y = event.y; - hover_event.modifier = event.state; - hover_event.mode = event.mode; - hover_event.detail = event.detail; - hover(hover_event); + hover(HoverEvent(event) { lost = false }); } }); @@ -36,58 +28,24 @@ public class EventBox : Gtk.EventBox { if (event.window == self.get_window() && event.detail != Gdk.NotifyType.INFERIOR) { this.unset_state_flags(Gtk.StateFlags.PRELIGHT); - var hover_event = HoverEvent(); - hover_event.lost = true; - hover_event.time = event.time; - hover_event.x = event.x; - hover_event.y = event.y; - hover_event.modifier = event.state; - hover_event.mode = event.mode; - hover_event.detail = event.detail; - hover_lost(hover_event); + hover_lost(HoverEvent(event) { lost = true }); } }); button_press_event.connect((event) => { - var click_event = ClickEvent(); - click_event.release = false; - click_event.time = event.time; - click_event.x = event.x; - click_event.y = event.y; - click_event.button = (MouseButton)event.button; - click_event.modifier = event.state; - click(click_event); + click(ClickEvent(event) { release = false }); }); button_release_event.connect((event) => { - var click_event = ClickEvent(); - click_event.release = true; - click_event.x = event.x; - click_event.y = event.y; - click_event.button = (MouseButton)event.button; - click_event.modifier = event.state; - click_release(click_event); + click_release(ClickEvent(event) { release = true }); }); scroll_event.connect((event) => { - var scroll_event = ScrollEvent(); - scroll_event.time = event.time; - scroll_event.x = event.x; - scroll_event.y = event.y; - scroll_event.modifier = event.state; - scroll_event.direction = event.direction; - scroll_event.delta_x = event.delta_x; - scroll_event.delta_y = event.delta_y; - scroll(scroll_event); + scroll(ScrollEvent(event)); }); motion_notify_event.connect((event) => { - var motion_event = MotionEvent(); - motion_event.time = event.time; - motion_event.x = event.x; - motion_event.y = event.y; - motion_event.modifier = event.state; - motion(motion_event); + motion(MotionEvent(event)); }); } } @@ -97,5 +55,12 @@ public struct MotionEvent { double x; double y; Gdk.ModifierType modifier; + + public MotionEvent(Gdk.EventMotion event) { + this.time = event.time; + this.x = event.x; + this.y = event.y; + this.modifier = event.state; + } } } |