76 std::function<
void()> on_enter,
77 std::function<
void()> on_leave) {
78 class Impl :
public ComponentBase {
81 std::function<
void()> on_enter,
82 std::function<
void()> on_leave)
83 : component_(std::move(component)),
84 on_enter_(std::move(on_enter)),
85 on_leave_(std::move(on_leave)) {
91 return ComponentBase::OnRender() | reflect(box_);
94 bool OnEvent(Event event)
override {
95 if (event.is_mouse()) {
96 const bool hover = box_.Contain(event.mouse().x, event.mouse().y) &&
98 if (hover != hover_) {
99 App::PostEventOrExecute(hover ? on_enter_ : on_leave_);
104 return ComponentBase::OnEvent(event);
110 std::function<void()> on_enter_;
111 std::function<void()> on_leave_;
114 return Make<Impl>(std::move(component), std::move(on_enter),
115 std::move(on_leave));