#include #include namespace psemek::ui::impl { button_base::button_base() {} bool button_base::on_event(mouse_move_event const & event) { bool const mouseover = geom::contains(shape(), geom::cast(event.position)); if (is_mouseover_ != mouseover) { is_mouseover_ = mouseover; mouseover_.set(is_mouseover_); } return is_mouseover_; } bool button_base::on_event(mouse_button_event const & event) { if (is_mouseover_) { bool const mousedown = event.button == app::mouse_button::left && event.down; if (is_mousedown_ != mousedown) { is_mousedown_ = mousedown; mousedown_.set(is_mouseover_); } return true; } return false; } void button_base::update(button const & value) { mouseover_ = value.mouseover; mousedown_ = value.mousedown; } }