18void Post(std::function<
void()> f) {
20 screen->Post(std::move(f));
45 : component_(std::move(
component)), hover_(hover) {
51 return ComponentBase::OnRender() | reflect(box_);
54 bool OnEvent(
Event event)
override {
56 *hover_ = box_.Contain(event.
mouse().
x, event.
mouse().
y) &&
60 return ComponentBase::OnEvent(event);
85 std::function<
void()> on_enter,
86 std::function<
void()> on_leave) {
90 std::function<
void()> on_enter,
91 std::function<
void()> on_leave)
93 on_enter_(std::move(on_enter)),
94 on_leave_(std::move(on_leave)) {
100 return ComponentBase::OnRender() | reflect(box_);
103 bool OnEvent(
Event event)
override {
105 const bool hover = box_.Contain(event.
mouse().
x, event.
mouse().
y) &&
107 if (hover != hover_) {
108 Post(hover ? on_enter_ : on_leave_);
113 return ComponentBase::OnEvent(event);
119 std::function<void()> on_enter_;
120 std::function<void()> on_leave_;
124 std::move(on_leave));
163 std::function<
void()> on_leave) {
186 [on_change] { on_change(
true); },
187 [on_change] { on_change(
false); }
static ScreenInteractive * Active()
Return the currently active screen, or null if none.
它將自己實作為 ftxui::Element 進行渲染。它透過回應 ftxui::Event 來實現鍵盤導航。
Component Hoverable(Component component, bool *hover)
包裝一個元件。提供能力以判斷滑鼠是否懸停在其上方。
代表一個事件。它可以是按鍵事件、終端機大小調整,或更多...
std::shared_ptr< Node > Element
return Make< Impl >(option)
std::function< Component(Component)> ComponentDecorator
std::shared_ptr< ComponentBase > Component