19class CheckboxBase :
public ComponentBase,
public CheckboxOption {
21 explicit CheckboxBase(CheckboxOption option)
22 : CheckboxOption(std::move(option)) {}
27 const bool is_focused = Focused();
28 const bool is_active = Active();
29 auto entry_state = EntryState{
30 *label, *checked, is_active, is_focused || hovered_, -1,
39 bool OnEvent(Event event)
override {
40 if (!CaptureMouse(event)) {
44 if (event.is_mouse()) {
45 return OnMouseEvent(event);
49 if (event == Event::Character(
' ') || event ==
Event::Return) {
58 bool OnMouseEvent(Event event) {
59 hovered_ = box_.Contain(event.mouse().x, event.mouse().y);
61 if (!CaptureMouse(event)) {
79 bool Focusable() const final {
return true; }
81 bool hovered_ =
false;
135 option.
label = std::move(label);
一個適配器。擁有或引用一個常數字串。為方便起見,此類別將多個不可變字串轉換為共享表示。
static CheckboxOption Simple()
標準Checkbox的選項。
static const Event Return
std::function< Element(const EntryState &)> transform
Component Checkbox(CheckboxOption options)
Element focus(Element)
將 child 設置為其同級元素中被聚焦的元素。
std::shared_ptr< T > Make(Args &&... args)
std::shared_ptr< Node > Element
Decorator reflect(Box &box)
std::shared_ptr< ComponentBase > Component