@@ -79,13 +79,11 @@ void window_state_free(struct window_state *state) {
79
79
free (state );
80
80
}
81
81
82
- accesskit_opt_node_id window_state_focus (struct window_state * state ) {
83
- accesskit_opt_node_id result ;
84
- result .has_value = state -> is_window_focused ;
85
- if (result .has_value ) {
86
- result .value = state -> focus ;
82
+ void window_state_set_tree_update_focus (struct window_state * state ,
83
+ accesskit_tree_update * update ) {
84
+ if (state -> is_window_focused ) {
85
+ accesskit_tree_update_set_focus (update , state -> focus );
87
86
}
88
- return result ;
89
87
}
90
88
91
89
accesskit_node * window_state_build_root (struct window_state * state ) {
@@ -106,21 +104,17 @@ accesskit_tree_update *window_state_build_initial_tree(
106
104
build_button (BUTTON_1_ID , "Button 1" , state -> node_classes );
107
105
accesskit_node * button_2 =
108
106
build_button (BUTTON_2_ID , "Button 2" , state -> node_classes );
109
- accesskit_tree_update * result =
110
- accesskit_tree_update_new ((state -> announcement != NULL ) ? 4 : 3 );
111
- result -> tree .has_value = true;
112
- result -> tree .value = accesskit_tree_new (WINDOW_ID );
113
- result -> focus = window_state_focus (state );
114
- result -> ids [0 ] = WINDOW_ID ;
115
- result -> nodes [0 ] = root ;
116
- result -> ids [1 ] = BUTTON_1_ID ;
117
- result -> nodes [1 ] = button_1 ;
118
- result -> ids [2 ] = BUTTON_2_ID ;
119
- result -> nodes [2 ] = button_2 ;
107
+ accesskit_tree_update * result = accesskit_tree_update_with_capacity (
108
+ (state -> announcement != NULL ) ? 4 : 3 );
109
+ accesskit_tree_update_set_tree (result , accesskit_tree_new (WINDOW_ID ));
110
+ window_state_set_tree_update_focus (state , result );
111
+ accesskit_tree_update_push_node (result , WINDOW_ID , root );
112
+ accesskit_tree_update_push_node (result , BUTTON_1_ID , button_1 );
113
+ accesskit_tree_update_push_node (result , BUTTON_2_ID , button_2 );
120
114
if (state -> announcement != NULL ) {
121
- result -> ids [3 ] = ANNOUNCEMENT_ID ;
122
- result -> nodes [3 ] =
115
+ accesskit_node * announcement =
123
116
build_announcement (state -> announcement , state -> node_classes );
117
+ accesskit_tree_update_push_node (result , ANNOUNCEMENT_ID , announcement );
124
118
}
125
119
return result ;
126
120
}
@@ -165,12 +159,10 @@ void window_state_press_button(struct window_state *state,
165
159
accesskit_node * announcement =
166
160
build_announcement (text , state -> node_classes );
167
161
accesskit_node * root = window_state_build_root (state );
168
- accesskit_tree_update * update = accesskit_tree_update_new (2 );
169
- update -> ids [0 ] = ANNOUNCEMENT_ID ;
170
- update -> nodes [0 ] = announcement ;
171
- update -> ids [1 ] = WINDOW_ID ;
172
- update -> nodes [1 ] = root ;
173
- update -> focus = window_state_focus (state );
162
+ accesskit_tree_update * update = accesskit_tree_update_with_capacity (2 );
163
+ accesskit_tree_update_push_node (update , ANNOUNCEMENT_ID , announcement );
164
+ accesskit_tree_update_push_node (update , WINDOW_ID , root );
165
+ window_state_set_tree_update_focus (state , update );
174
166
accesskit_windows_queued_events * events =
175
167
accesskit_windows_adapter_update (state -> adapter , update );
176
168
accesskit_windows_queued_events_raise (events );
@@ -184,10 +176,9 @@ struct window_state *get_window_state(HWND window) {
184
176
void update_focus (HWND window , bool is_window_focused ) {
185
177
struct window_state * state = get_window_state (window );
186
178
state -> is_window_focused = is_window_focused ;
187
- accesskit_opt_node_id focus = window_state_focus (state );
188
179
if (state -> adapter != NULL ) {
189
- accesskit_tree_update * update = accesskit_tree_update_new (0 );
190
- update -> focus = focus ;
180
+ accesskit_tree_update * update = accesskit_tree_update_new ();
181
+ window_state_set_tree_update_focus ( state , update ) ;
191
182
accesskit_windows_queued_events * events =
192
183
accesskit_windows_adapter_update (state -> adapter , update );
193
184
accesskit_windows_queued_events_raise (events );
0 commit comments