NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
event_dispatcher.hpp
浏览该文件的文档.
1#ifndef NEFORCE_TUI_EVENT_DISPATCHER_HPP__
2#define NEFORCE_TUI_EVENT_DISPATCHER_HPP__
3
12
17NEFORCE_BEGIN_NAMESPACE__
18NEFORCE_BEGIN_TUI__
19
24
31class NEFORCE_API event_dispatcher {
32public:
38
45 bool dispatch_key(const key_event& e, component_base* root);
46
56 bool dispatch_mouse(const mouse_event& e, component_base* root, const vector<layout_rect>& layout,
57 const element& tree, const vector<scrollbar_hit>& hits);
58
64 void set_dirty_callback(function<void()> cb) { mark_dirty_ = move(cb); }
65
66private:
67 struct scroll_drag_state {
68 state<int>* scroll_state = nullptr;
69 int anchor_position = 0;
70 int anchor_value = 0;
71 bool vertical = false;
72 };
73
74 focus_manager& focus_mgr_;
75 component_base* last_mouse_target_ = nullptr;
76 scroll_drag_state drag_state_storage_;
77 scroll_drag_state* drag_state_ = nullptr;
78 function<void()> mark_dirty_;
79};
80 // TUI
82
83NEFORCE_END_TUI__
84NEFORCE_END_NAMESPACE__
85#endif // NEFORCE_TUI_EVENT_DISPATCHER_HPP__
函数包装器主模板声明
void set_dirty_callback(function< void()> cb)
设置脏标记回调
event_dispatcher(focus_manager &fm)
构造函数
bool dispatch_mouse(const mouse_event &e, component_base *root, const vector< layout_rect > &layout, const element &tree, const vector< scrollbar_hit > &hits)
分发鼠标事件
bool dispatch_key(const key_event &e, component_base *root)
分发键盘事件
响应式状态变量
动态大小数组容器
TUI输入事件类型定义
焦点管理器
通用函数包装器
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
元素树渲染器