77 std::function<
void()> on_enter,
78 std::function<
void()> on_leave) {
79 class Impl :
public ComponentBase {
82 std::function<
void()> on_enter,
83 std::function<
void()> on_leave)
84 : component_(std::move(component)),
85 on_enter_(std::move(on_enter)),
86 on_leave_(std::move(on_leave)) {
92 return ComponentBase::OnRender() | reflect(box_);
95 bool OnEvent(Event event)
override {
96 if (event.is_mouse()) {
97 const bool hover = box_.Contain(event.mouse().x, event.mouse().y) &&
99 if (hover != hover_) {
100 App::PostEventOrExecute(hover ? on_enter_ : on_leave_);
105 return ComponentBase::OnEvent(event);
111 std::function<void()> on_enter_;
112 std::function<void()> on_leave_;
115 return Make<Impl>(std::move(component), std::move(on_enter),
116 std::move(on_leave));