56 template<
typename Widget,
horizontal_alignment Alignment = horizontal_alignment::left,
typename... Args>
59 auto widget = std::make_unique<Widget>(window,
this, std::forward<Args>(args)...);
66 for (
hilet& child : _left_children) {
69 for (
hilet& child :
std::ranges::reverse_view(_right_children)) {
74 widget_constraints
const& set_constraints() noexcept;
75 void set_layout(widget_layout const& layout) noexcept override;
76 void draw(draw_context const& context) noexcept override;
77 hitbox hitbox_test(point3 position) const noexcept override;
78 [[nodiscard]] color focus_color() const noexcept override;
81 std::vector<
std::unique_ptr<widget>> _left_children;
82 std::vector<
std::unique_ptr<widget>> _right_children;
83 grid_layout _grid_layout;
84 margins _inner_margins;
86 void update_constraints_for_child(
90 float& shared_top_margin,
91 float& shared_bottom_margin,
92 widget_baseline& shared_baseline) noexcept;
94 void update_layout_for_child(widget& child, ssize_t index, widget_layout const& context) const noexcept;
98 widget& add_widget(horizontal_alignment alignment,
std::unique_ptr<widget> widget) noexcept;
104 bool tab_button_has_focus() const noexcept;