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(mouse_event const &event) noexcept override;
90 bool handle_event(command command) noexcept override;
91 [[nodiscard]] hitbox hitbox_test(point3 position) const noexcept override;
92 [[nodiscard]]
bool accepts_keyboard_focus(keyboard_focus_group group) const noexcept override;
93 [[nodiscard]] color focus_color() const noexcept override;
96 weak_or_unique_ptr<delegate_type> _delegate;
97 notifier<>::token_type _delegate_cbt;
99 std::unique_ptr<label_widget> _current_label_widget;
100 std::unique_ptr<label_widget> _unknown_label_widget;
102 aarectangle _option_rectangle;
103 aarectangle _left_box_rectangle;
105 glyph_ids _chevrons_glyph;
106 aarectangle _chevrons_rectangle;
108 bool _selecting = false;
109 bool _has_options = false;
111 aarectangle _overlay_rectangle;
112 std::unique_ptr<overlay_widget> _overlay_widget;
113 vertical_scroll_widget<> *_scroll_widget =
nullptr;
114 column_widget *_column_widget =
nullptr;
116 decltype(unknown_label)::token_type _unknown_label_cbt;
117 std::vector<menu_button_widget *> _menu_button_widgets;
118 std::vector<notifier<>::token_type> _menu_button_tokens;
120 selection_widget(gui_window &window, widget *parent, weak_or_unique_ptr<delegate_type> delegate) noexcept;
121 [[nodiscard]] menu_button_widget const *get_first_menu_button() const noexcept;
122 [[nodiscard]] menu_button_widget const *get_selected_menu_button() const noexcept;
123 void start_selecting() noexcept;
124 void stop_selecting() noexcept;
125 void repopulate_options() noexcept;
126 void draw_outline(draw_context const &context) noexcept;
127 void draw_left_box(draw_context const &context) noexcept;
128 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