21class CheckboxBase :
public ComponentBase,
public CheckboxOption {
23 explicit CheckboxBase(CheckboxOption option)
24 : CheckboxOption(std::move(option)) {}
29 const bool is_focused = Focused();
30 const bool is_active = Active();
31 auto entry_state = EntryState{
32 std::string(*label), *checked, is_active, is_focused || hovered_, -1,
34 auto element = (transform ? transform : CheckboxOption::Simple().transform)(
41 bool OnEvent(Event event)
override {
42 if (!CaptureMouse(event)) {
46 if (event.is_mouse()) {
47 return OnMouseEvent(event);
51 if (event == Event::Character(
' ') || event == Event::Return) {
53 App::PostEventOrExecute(on_change);
60 bool OnMouseEvent(Event event) {
61 hovered_ = box_.Contain(event.mouse().x, event.mouse().y);
63 if (!CaptureMouse(event)) {
71 if (event.mouse().button == Mouse::Left &&
72 event.mouse().motion == Mouse::Pressed) {
74 App::PostEventOrExecute(on_change);
81 bool Focusable() const final {
return true; }
83 bool hovered_ =
false;
138 option.label = std::move(label);
139 option.checked = checked;
Component Checkbox(ConstStringRef label, bool *checked, CheckboxOption options=CheckboxOption::Simple())
Draw checkable element.
Element focus(Element child)
Set the child to be the one focused among its siblings.
The FTXUI ftxui:: namespace.
std::shared_ptr< T > Make(Args &&... args)
std::shared_ptr< Node > Element
Decorator reflect(Box &box)
std::shared_ptr< ComponentBase > Component