@@ -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
221219accesskit_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
275267accesskit_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