Skip to content

Commit 1e76026

Browse files
committed
fix: use struct instead of std::tuple, to silence gcc uninitialized error
it is also better, than using std::get<> everywhere
1 parent 2d18210 commit 1e76026

File tree

7 files changed

+30
-22
lines changed

7 files changed

+30
-22
lines changed

src/scenes/online_lobby/online_lobby.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,9 @@ namespace scenes {
121121
if (const auto additional = event_result.get_additional(); additional.has_value()) {
122122
const auto value = additional.value();
123123

124-
if (std::get<0>(value) == ui::EventHandleType::RequestAction) {
124+
if (value.handle_type == ui::EventHandleType::RequestAction) {
125125

126-
127-
if (auto text_input = utils::is_child_class<ui::TextInput>(std::get<1>(value));
128-
text_input.has_value()) {
126+
if (auto text_input = utils::is_child_class<ui::TextInput>(value.widget); text_input.has_value()) {
129127
spdlog::info("Pressed Enter on TextInput {}", text_input.value()->get_text());
130128

131129
if (text_input.value()->has_focus()) {
@@ -139,7 +137,7 @@ namespace scenes {
139137
}
140138

141139
throw helper::FatalError(
142-
fmt::format("Unsupported Handle Type: {}", magic_enum::enum_name(std::get<0>(value)))
140+
fmt::format("Unsupported Handle Type: {}", magic_enum::enum_name(value.handle_type))
143141
);
144142
}
145143

src/scenes/recording_selector/recording_selector.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,9 @@ namespace scenes {
178178

179179
if (const auto event_result = m_main_layout.handle_event(input_manager, event); event_result) {
180180
if (const auto additional = event_result.get_additional();
181-
additional.has_value() and std::get<0>(additional.value()) == ui::EventHandleType::RequestAction) {
181+
additional.has_value() and additional.value().handle_type == ui::EventHandleType::RequestAction) {
182182
m_next_command = Command{
183-
Action{ .widget = std::get<1>(additional.value()), .data = std::get<2>(additional.value()) }
183+
Action{ .widget = additional.value().widget, .data = additional.value().data }
184184
};
185185
}
186186

src/scenes/settings_menu/color_setting_row.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,15 +181,15 @@ ui::Widget::EventHandleResult custom_ui::ColorSettingRow::handle_event(
181181
) {
182182
auto result = m_main_layout.handle_event(input_manager, event);
183183
if (const auto additional = result.get_additional(); additional.has_value()) {
184-
if (std::get<0>(additional.value()) == ui::EventHandleType::RequestAction) {
184+
if (additional.value().handle_type == ui::EventHandleType::RequestAction) {
185185
return {
186186
result,
187-
{ ui::EventHandleType::RequestAction, this, nullptr }
187+
{ .handle_type = ui::EventHandleType::RequestAction, .widget = this, .data = nullptr }
188188
};
189189
}
190190

191191
throw helper::FatalError(
192-
fmt::format("Unsupported Handle Type: {}", magic_enum::enum_name(std::get<0>(additional.value())))
192+
fmt::format("Unsupported Handle Type: {}", magic_enum::enum_name(additional.value().handle_type))
193193
);
194194
}
195195

src/scenes/settings_menu/settings_menu.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,9 @@ namespace scenes {
248248
bool SettingsMenu::handle_event(const std::shared_ptr<input::InputManager>& input_manager, const SDL_Event& event) {
249249
if (const auto event_result = m_main_layout.handle_event(input_manager, event); event_result) {
250250
if (const auto additional = event_result.get_additional();
251-
additional.has_value() and std::get<0>(additional.value()) == ui::EventHandleType::RequestAction) {
251+
additional.has_value() and additional.value().handle_type == ui::EventHandleType::RequestAction) {
252252
m_next_command = Command{
253-
Action{ .widget = std::get<1>(additional.value()), .data = std::get<2>(additional.value()) }
253+
Action{ .widget = additional.value().widget, .data = additional->data }
254254
};
255255
}
256256

src/ui/components/color_picker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ ui::ColorPicker::handle_event(const std::shared_ptr<input::InputManager>& input_
487487

488488
if (handled) {
489489
if (const auto additional = handled.get_additional(); additional.has_value()) {
490-
switch (std::get<0>(additional.value())) {
490+
switch (additional.value().handle_type) {
491491
case ui::EventHandleType::RequestFocus:
492492
if (not m_color_text->has_focus()) {
493493
m_color_text->focus();

src/ui/layouts/focus_layout.cpp

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ ui::FocusLayout::handle_event_result(const std::optional<ui::Widget::InnerState>
135135

136136
auto value = result.value();
137137

138-
switch (std::get<0>(value)) {
138+
switch (value.handle_type) {
139139
case ui::EventHandleType::RequestFocus: {
140140
const auto focusable = as_focusable(widget);
141141
if (not focusable.has_value()) {
@@ -160,8 +160,9 @@ ui::FocusLayout::handle_event_result(const std::optional<ui::Widget::InnerState>
160160

161161
// if the layout itself has not focus, it needs focus itself too
162162
if (not has_focus()) {
163-
return ui::Widget::InnerState{ ui::EventHandleType::RequestFocus, std::get<1>(value),
164-
std::get<2>(value) };
163+
return ui::Widget::InnerState{ .handle_type = ui::EventHandleType::RequestFocus,
164+
.widget = value.widget,
165+
.data = value.data };
165166
}
166167

167168

@@ -192,22 +193,26 @@ ui::FocusLayout::handle_event_result(const std::optional<ui::Widget::InnerState>
192193
const auto test_forward = try_set_next_focus(FocusChangeDirection::Forward);
193194
if (not test_forward) {
194195
if (m_options.wrap_around) {
195-
return ui::Widget::InnerState{ ui::EventHandleType::RequestUnFocus, std::get<1>(value),
196-
std::get<2>(value) };
196+
return ui::Widget::InnerState{ .handle_type = ui::EventHandleType::RequestUnFocus,
197+
.widget = value.widget,
198+
.data = value.data };
197199
}
198200

199201
const auto test_backwards = try_set_next_focus(FocusChangeDirection::Backward);
200202
if (not test_backwards) {
201-
return ui::Widget::InnerState{ ui::EventHandleType::RequestUnFocus, std::get<1>(value),
202-
std::get<2>(value) };
203+
return ui::Widget::InnerState{ .handle_type = ui::EventHandleType::RequestUnFocus,
204+
.widget = value.widget,
205+
.data = value.data };
203206
}
204207
}
205208

206209
return std::nullopt;
207210
}
208211
case ui::EventHandleType::RequestAction: {
209212
// just forward it
210-
return ui::Widget::InnerState{ ui::EventHandleType::RequestAction, std::get<1>(value), std::get<2>(value) };
213+
return ui::Widget::InnerState{ .handle_type = ui::EventHandleType::RequestAction,
214+
.widget = value.widget,
215+
.data = value.data };
211216
}
212217
default:
213218
UNREACHABLE();

src/ui/widget.hpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ namespace ui {
2323
bool m_top_level;
2424

2525
public:
26-
using InnerState = std::tuple<ui::EventHandleType, Widget*, void*>;
26+
struct InnerState {
27+
ui::EventHandleType handle_type;
28+
Widget* widget;
29+
void* data;
30+
};
31+
2732
using EventHandleResult = helper::BoolWrapper<InnerState>;
2833

2934
explicit Widget(const Layout& layout, WidgetType type, bool is_top_level)

0 commit comments

Comments
 (0)