@@ -197,16 +197,14 @@ void window_state_unlock(struct window_state *state) {
197
197
SDL_UnlockMutex (state -> mutex );
198
198
}
199
199
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 );
205
204
}
206
- return result ;
207
205
}
208
206
209
- accesskit_node * window_state_build_root (struct window_state * state ) {
207
+ accesskit_node * window_state_build_root (const struct window_state * state ) {
210
208
accesskit_node_builder * builder =
211
209
accesskit_node_builder_new (ACCESSKIT_ROLE_WINDOW );
212
210
accesskit_node_builder_push_child (builder , BUTTON_1_ID );
@@ -219,27 +217,23 @@ accesskit_node *window_state_build_root(struct window_state *state) {
219
217
}
220
218
221
219
accesskit_tree_update * window_state_build_initial_tree (
222
- struct window_state * state ) {
220
+ const struct window_state * state ) {
223
221
accesskit_node * root = window_state_build_root (state );
224
222
accesskit_node * button_1 =
225
223
build_button (BUTTON_1_ID , "Button 1" , state -> node_classes );
226
224
accesskit_node * button_2 =
227
225
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 );
239
233
if (state -> announcement != NULL ) {
240
- result -> ids [3 ] = ANNOUNCEMENT_ID ;
241
- result -> nodes [3 ] =
234
+ accesskit_node * announcement =
242
235
build_announcement (state -> announcement , state -> node_classes );
236
+ accesskit_tree_update_push_node (result , ANNOUNCEMENT_ID , announcement );
243
237
}
244
238
return result ;
245
239
}
@@ -249,12 +243,10 @@ accesskit_tree_update *build_tree_update_for_button_press(void *userdata) {
249
243
accesskit_node * announcement =
250
244
build_announcement (state -> announcement , state -> node_classes );
251
245
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 );
258
250
return update ;
259
251
}
260
252
@@ -274,9 +266,8 @@ void window_state_press_button(struct window_state *state,
274
266
275
267
accesskit_tree_update * build_tree_update_for_focus_update (void * userdata ) {
276
268
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 );
280
271
return update ;
281
272
}
282
273
@@ -376,9 +367,11 @@ int main(int argc, char *argv[]) {
376
367
window_state_update_focus (& state , & adapter );
377
368
window_state_unlock (& state );
378
369
break ;
370
+ case SDL_WINDOWEVENT_MAXIMIZED :
379
371
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 :
382
375
case SDL_WINDOWEVENT_SHOWN :
383
376
accesskit_sdl_adapter_update_root_window_bounds (& adapter , window );
384
377
break ;
0 commit comments