NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
focus_manager.hpp
浏览该文件的文档.
1#ifndef NEFORCE_TUI_FOCUS_MANAGER_HPP__
2#define NEFORCE_TUI_FOCUS_MANAGER_HPP__
3
11
13NEFORCE_BEGIN_NAMESPACE__
14NEFORCE_BEGIN_TUI__
15
20
26class NEFORCE_API focus_manager {
27public:
28 focus_manager() = default;
29
35
41
45 void focus_next();
46
50 void focus_prev();
51
56 NEFORCE_NODISCARD component_base* focused() const noexcept { return focused_; }
57
62 NEFORCE_NODISCARD const vector<component_base*>& chain() const noexcept { return focus_chain_; }
63
67 void mark_chain_dirty() noexcept { chain_dirty_ = true; }
68
73 NEFORCE_NODISCARD bool is_chain_dirty() const noexcept { return chain_dirty_; }
74
75private:
76 component_base* focused_ = nullptr;
77 vector<component_base*> focus_chain_;
78 bool chain_dirty_ = true;
79};
80 // TUI
82
83NEFORCE_END_TUI__
84NEFORCE_END_NAMESPACE__
85#endif // NEFORCE_TUI_FOCUS_MANAGER_HPP__
const vector< component_base * > & chain() const noexcept
获取焦点链
void set_focus(component_base *comp)
设置焦点组件
void focus_next()
焦点移动到下一个可聚焦组件
void rebuild_chain(component_base *root)
从组件树重建焦点链
bool is_chain_dirty() const noexcept
焦点链是否需要重建
void mark_chain_dirty() noexcept
标记焦点链需要重建
void focus_prev()
焦点移动到上一个可聚焦组件
component_base * focused() const noexcept
获取当前焦点组件
动态大小数组容器
TUI组件基类