73 template<
typename Value>
75 requires(not std::is_convertible_v<Value, weak_or_unique_ptr<delegate_type>>) :
76 text_field_widget(window, parent, make_unique_default_text_field_delegate(
std::forward<Value>(value)))
83 co_yield _scroll_widget.get();
85 widget_constraints
const &set_constraints() noexcept override;
86 void set_layout(widget_layout const &layout) noexcept override;
87 void draw(draw_context const &context) noexcept override;
88 bool handle_event(command command) noexcept override;
89 hitbox hitbox_test(point3 position) const noexcept override;
90 [[nodiscard]]
bool accepts_keyboard_focus(keyboard_focus_group group) const noexcept override;
91 [[nodiscard]] color focus_color() const noexcept override;
94 weak_or_unique_ptr<delegate_type> _delegate;
95 notifier<>::token_type _delegate_cbt;
99 std::unique_ptr<scroll_widget<axis::none, false>> _scroll_widget;
103 text_widget *_text_widget =
nullptr;
107 observable<gstring> _text;
111 aarectangle _text_rectangle;
115 observable<label> _error_label;
116 aarectangle _error_label_rectangle;
117 std::unique_ptr<label_widget> _error_label_widget;
119 typename decltype(continues)::token_type _continues_cbt;
120 typename decltype(text_style)::token_type _text_style_cbt;
121 typename decltype(_text)::token_type _text_cbt;
123 text_field_widget(gui_window &window, widget *parent, weak_or_unique_ptr<delegate_type> delegate) noexcept;
124 void revert(
bool force) noexcept;
125 void commit(
bool force) noexcept;
126 void draw_background_box(draw_context const &context) const noexcept;