Skip to content

Commit 503c42b

Browse files
committed
Use the new accesskit_tree_update type
1 parent e87c280 commit 503c42b

File tree

1 file changed

+25
-32
lines changed

1 file changed

+25
-32
lines changed

bindings/c/examples/sdl/hello_world.c

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -197,16 +197,14 @@ void window_state_unlock(struct window_state *state) {
197197
SDL_UnlockMutex(state->mutex);
198198
}
199199

200-
accesskit_opt_node_id window_state_focus(struct window_state *state) {
201-
accesskit_opt_node_id result;
202-
result.has_value = state->is_window_focused;
203-
if (result.has_value) {
204-
result.value = state->focus;
200+
void window_state_set_tree_update_focus(const struct window_state *state,
201+
accesskit_tree_update *update) {
202+
if (state->is_window_focused) {
203+
accesskit_tree_update_set_focus(update, state->focus);
205204
}
206-
return result;
207205
}
208206

209-
accesskit_node *window_state_build_root(struct window_state *state) {
207+
accesskit_node *window_state_build_root(const struct window_state *state) {
210208
accesskit_node_builder *builder =
211209
accesskit_node_builder_new(ACCESSKIT_ROLE_WINDOW);
212210
accesskit_node_builder_push_child(builder, BUTTON_1_ID);
@@ -219,27 +217,23 @@ accesskit_node *window_state_build_root(struct window_state *state) {
219217
}
220218

221219
accesskit_tree_update *window_state_build_initial_tree(
222-
struct window_state *state) {
220+
const struct window_state *state) {
223221
accesskit_node *root = window_state_build_root(state);
224222
accesskit_node *button_1 =
225223
build_button(BUTTON_1_ID, "Button 1", state->node_classes);
226224
accesskit_node *button_2 =
227225
build_button(BUTTON_2_ID, "Button 2", state->node_classes);
228-
accesskit_tree_update *result =
229-
accesskit_tree_update_new((state->announcement != NULL) ? 4 : 3);
230-
result->tree.has_value = true;
231-
result->tree.value = accesskit_tree_new(WINDOW_ID);
232-
result->focus = window_state_focus(state);
233-
result->ids[0] = WINDOW_ID;
234-
result->nodes[0] = root;
235-
result->ids[1] = BUTTON_1_ID;
236-
result->nodes[1] = button_1;
237-
result->ids[2] = BUTTON_2_ID;
238-
result->nodes[2] = button_2;
226+
accesskit_tree_update *result = accesskit_tree_update_with_capacity(
227+
(state->announcement != NULL) ? 4 : 3);
228+
accesskit_tree_update_set_tree(result, accesskit_tree_new(WINDOW_ID));
229+
window_state_set_tree_update_focus(state, result);
230+
accesskit_tree_update_push_node(result, WINDOW_ID, root);
231+
accesskit_tree_update_push_node(result, BUTTON_1_ID, button_1);
232+
accesskit_tree_update_push_node(result, BUTTON_2_ID, button_2);
239233
if (state->announcement != NULL) {
240-
result->ids[3] = ANNOUNCEMENT_ID;
241-
result->nodes[3] =
234+
accesskit_node *announcement =
242235
build_announcement(state->announcement, state->node_classes);
236+
accesskit_tree_update_push_node(result, ANNOUNCEMENT_ID, announcement);
243237
}
244238
return result;
245239
}
@@ -249,12 +243,10 @@ accesskit_tree_update *build_tree_update_for_button_press(void *userdata) {
249243
accesskit_node *announcement =
250244
build_announcement(state->announcement, state->node_classes);
251245
accesskit_node *root = window_state_build_root(state);
252-
accesskit_tree_update *update = accesskit_tree_update_new(2);
253-
update->ids[0] = ANNOUNCEMENT_ID;
254-
update->nodes[0] = announcement;
255-
update->ids[1] = WINDOW_ID;
256-
update->nodes[1] = root;
257-
update->focus = window_state_focus(state);
246+
accesskit_tree_update *update = accesskit_tree_update_with_capacity(2);
247+
accesskit_tree_update_push_node(update, ANNOUNCEMENT_ID, announcement);
248+
accesskit_tree_update_push_node(update, WINDOW_ID, root);
249+
accesskit_tree_update_set_focus(update, state->focus);
258250
return update;
259251
}
260252

@@ -274,9 +266,8 @@ void window_state_press_button(struct window_state *state,
274266

275267
accesskit_tree_update *build_tree_update_for_focus_update(void *userdata) {
276268
struct window_state *state = userdata;
277-
accesskit_opt_node_id focus = window_state_focus(state);
278-
accesskit_tree_update *update = accesskit_tree_update_new(0);
279-
update->focus = focus;
269+
accesskit_tree_update *update = accesskit_tree_update_new();
270+
accesskit_tree_update_set_focus(update, state->focus);
280271
return update;
281272
}
282273

@@ -376,9 +367,11 @@ int main(int argc, char *argv[]) {
376367
window_state_update_focus(&state, &adapter);
377368
window_state_unlock(&state);
378369
break;
370+
case SDL_WINDOWEVENT_MAXIMIZED:
379371
case SDL_WINDOWEVENT_MOVED:
380-
accesskit_sdl_adapter_update_root_window_bounds(&adapter, window);
381-
break;
372+
case SDL_WINDOWEVENT_RESIZED:
373+
case SDL_WINDOWEVENT_RESTORED:
374+
case SDL_WINDOWEVENT_SIZE_CHANGED:
382375
case SDL_WINDOWEVENT_SHOWN:
383376
accesskit_sdl_adapter_update_root_window_bounds(&adapter, window);
384377
break;

0 commit comments

Comments
 (0)