65 template<
typename OptionList,
typename Value,
typename... Args>
67 requires(not std::is_convertible_v<Value, weak_or_unique_ptr<delegate_type>>) :
71 make_unique_default_selection_delegate(
72 std::forward<OptionList>(option_list),
73 std::forward<Value>(value),
74 std::forward<Args>(args)...))
81 co_yield _overlay_widget.get();
82 co_yield _current_label_widget.get();
83 co_yield _unknown_label_widget.get();
86 widget_constraints
const &set_constraints() noexcept override;
87 void set_layout(widget_layout const &layout) noexcept override;
88 void draw(draw_context const &context) noexcept override;
89 bool handle_event(gui_event const& event) noexcept override;
90 [[nodiscard]] hitbox hitbox_test(point3 position) const noexcept override;
91 [[nodiscard]]
bool accepts_keyboard_focus(keyboard_focus_group group) const noexcept override;
92 [[nodiscard]] color focus_color() const noexcept override;
95 weak_or_unique_ptr<delegate_type> _delegate;
96 notifier<>::token_type _delegate_cbt;
98 std::unique_ptr<label_widget> _current_label_widget;
99 std::unique_ptr<label_widget> _unknown_label_widget;
101 aarectangle _option_rectangle;
102 aarectangle _left_box_rectangle;
104 glyph_ids _chevrons_glyph;
105 aarectangle _chevrons_rectangle;
107 bool _selecting = false;
108 bool _has_options = false;
110 aarectangle _overlay_rectangle;
111 std::unique_ptr<overlay_widget> _overlay_widget;
112 vertical_scroll_widget<> *_scroll_widget =
nullptr;
113 column_widget *_column_widget =
nullptr;
115 decltype(unknown_label)::token_type _unknown_label_cbt;
116 std::vector<menu_button_widget *> _menu_button_widgets;
117 std::vector<notifier<>::token_type> _menu_button_tokens;
119 selection_widget(gui_window &window, widget *parent, weak_or_unique_ptr<delegate_type> delegate) noexcept;
120 [[nodiscard]] menu_button_widget const *get_first_menu_button() const noexcept;
121 [[nodiscard]] menu_button_widget const *get_selected_menu_button() const noexcept;
122 void start_selecting() noexcept;
123 void stop_selecting() noexcept;
124 void repopulate_options() noexcept;
125 void draw_outline(draw_context const &context) noexcept;
126 void draw_left_box(draw_context const &context) noexcept;
127 void draw_chevrons(draw_context const &context) noexcept;
selection_widget(gui_window &window, widget *parent, OptionList &&option_list, Value &&value, Args &&...args) noexcept
Construct a selection widget which will monitor an option list and a value.
Definition selection_widget.hpp:66