summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAylur <[email protected]>2024-06-27 15:34:31 +0200
committerAylur <[email protected]>2024-06-27 15:34:31 +0200
commit302172a876f2d180931ebb67926b845c49cd0388 (patch)
treeca0a492dfe0d7d7a76899e5aca0af07a638033fe /src
parenta5d2c94aafc0c16b0f581cef472bbcf969b7ee1b (diff)
fix button hover event
Diffstat (limited to 'src')
-rw-r--r--src/widget/button.vala80
-rw-r--r--src/widget/eventbox.vala61
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;
+ }
}
}