Event Handling
Events are how users interact with your application. I’ll explore Freya’s event system.
Click Events
Button::new()
.on_press(|_| {
println!("Button clicked!");
})
.child(label().text("Click me"))
Keyboard Events
rect()
.a11y_focusable(true) // Make element focusable to receive key events
.on_key_down(|e| {
if e.data.key == Key::Named(NamedKey::Enter) {
println!("Enter pressed!");
}
})
.child(label().text("Press Enter"))
Mouse Events
rect()
.width(200.0)
.height(200.0)
.background(Color::from_rgb(100, 100, 100))
.on_pointer_enter(|_| println!("Mouse entered"))
.on_pointer_leave(|_| println!("Mouse left"))
.on_pointer_down(|_| println!("Mouse down"))
.on_pointer_up(|_| println!("Mouse up"))
Event Modifiers
Button::new()
.on_press(|e| {
// Note: modifiers might be part of specific event data depending on event type
// This is a conceptual example for pointer events
if e.data.modifiers.contains(Modifiers::CONTROL) {
println!("Ctrl + Click!");
}
})
.child(label().text("Ctrl + Click me"))
Scroll Events
rect()
.width(Size::fill())
.height(200.0)
.overflow_y(Overflow::Scroll) // Enable scrolling
.on_scroll(|s| {
// Access scroll data
println!("Scroll event: {:?}", s);
})
// Add enough content to scroll
What’s Next
Next, I’ll explore styling and theming in Freya.
Summary
on_presshandles button clickson_key_down/on_key_uphandle keyboard input- Pointer events (
on_pointer_...) track mouse/touch interaction - Event data contains key info, modifiers, and coordinates
- Scroll events track scroll usage