| Flutter Linux Embedder |

Functions | Variables
fl_view_accessible.h File Reference
`#include <atk/atk.h>`
`#include "flutter/shell/platform/embedder/embedder.h"`
`#include "flutter/shell/platform/linux/public/flutter_linux/fl_engine.h"`

Go to the source code of this file.

## Functions
G_BEGIN_DECLS | G_DECLARE_FINAL_TYPE (FlViewAccessible, fl_view_accessible, FL, VIEW_ACCESSIBLE, AtkPlug) FlViewAccessible *fl_view_accessible_new(FlEngine *engine
void | fl_view_accessible_handle_update_semantics (FlViewAccessible *accessible, const FlutterSemanticsUpdate2 *update)

## Variables
G_BEGIN_DECLS FlutterViewId | view_id

## Function Documentation

## ◆ fl_view_accessible_handle_update_semantics()

void fl_view_accessible_handle_update_semantics | ( | FlViewAccessible * | accessible,
|  | const FlutterSemanticsUpdate2 * | update
| ) |  |

fl_view_accessible_handle_update_semantics: @accessible: an #FlViewAccessible. @update: semantic update information.

Handle a semantics update from Flutter.

Definition at line 143 of file fl_view_accessible.cc.

145 {
146 g_return_if_fail(FL_IS_VIEW_ACCESSIBLE(self));
147
148 g_autoptr(GHashTable) pending_children =
149 g_hash_table_new_full(g_direct_hash, g_direct_equal, nullptr,
150 reinterpret_cast<GDestroyNotify>(fl_value_unref));
151 for (size_t i = 0; i < update->node_count; i++) {
152 FlutterSemanticsNode2* node = update->nodes[i];
153 FlAccessibleNode* atk_node = get_node(self, node);
154
155 fl_accessible_node_set_flags(atk_node, node->flags2);
156 fl_accessible_node_set_actions(atk_node, node->actions);
157 fl_accessible_node_set_name(atk_node, node->label);
158 fl_accessible_node_set_extents(
159 atk_node, node->rect.left + node->transform.transX,
160 node->rect.top + node->transform.transY,
161 node->rect.right - node->rect.left, node->rect.bottom - node->rect.top);
162 fl_accessible_node_set_value(atk_node, node->value);
163 fl_accessible_node_set_text_selection(atk_node, node->text_selection_base,
164 node->text_selection_extent);
165 fl_accessible_node_set_text_direction(atk_node, node->text_direction);
166
167 FlValue* children = fl_value_new_int32_list(
168 node->children_in_traversal_order, node->child_count);
169 g_hash_table_insert(pending_children, atk_node, children);
170 }
171
172 g_hash_table_foreach_remove(
173 pending_children,
174 [](gpointer key, gpointer value, gpointer user_data) -> gboolean {
175 FlViewAccessible* self = FL_VIEW_ACCESSIBLE(user_data);
176
177 FlAccessibleNode* parent = FL_ACCESSIBLE_NODE(key);
178
179 size_t child_count = fl_value_get_length(static_cast<FlValue*>(value));
180 const int32_t* children_in_traversal_order =
181 fl_value_get_int32_list(static_cast<FlValue*>(value));
182
183 g_autoptr(GPtrArray) children = g_ptr_array_new();
184 for (size_t i = 0; i < child_count; i++) {
185 FlAccessibleNode* child =
186 lookup_node(self, children_in_traversal_order[i]);
187 g_assert(child != nullptr);
188 fl_accessible_node_set_parent(child, ATK_OBJECT(parent), i);
189 g_ptr_array_add(children, child);
190 }
191 fl_accessible_node_set_children(parent, children);
192
193 return TRUE;
194 },
195 self);
196 }
fl_accessible_node_set_name
void fl_accessible_node_set_name(FlAccessibleNode *self, const gchar *name)
Definition: fl_accessible_node.cc:576
fl_accessible_node_set_text_direction
void fl_accessible_node_set_text_direction(FlAccessibleNode *self, FlutterTextDirection direction)
Definition: fl_accessible_node.cc:622
fl_accessible_node_set_text_selection
void fl_accessible_node_set_text_selection(FlAccessibleNode *self, gint base, gint extent)
Definition: fl_accessible_node.cc:613
fl_accessible_node_set_actions
void fl_accessible_node_set_actions(FlAccessibleNode *self, FlutterSemanticsAction actions)
Definition: fl_accessible_node.cc:600
fl_accessible_node_set_children
void fl_accessible_node_set_children(FlAccessibleNode *self, GPtrArray *children)
Definition: fl_accessible_node.cc:549
fl_accessible_node_set_extents
void fl_accessible_node_set_extents(FlAccessibleNode *self, gint x, gint y, gint width, gint height)
Definition: fl_accessible_node.cc:582
fl_accessible_node_set_value
void fl_accessible_node_set_value(FlAccessibleNode *self, const gchar *value)
Definition: fl_accessible_node.cc:607
fl_accessible_node_set_parent
void fl_accessible_node_set_parent(FlAccessibleNode *self, AtkObject *parent, gint index)
Definition: fl_accessible_node.cc:538
fl_accessible_node_set_flags
void fl_accessible_node_set_flags(FlAccessibleNode *self, FlutterSemanticsFlags *flags)
Definition: fl_accessible_node.cc:593
g_autoptr
g_autoptr(GMutexLocker) locker
TRUE
return TRUE
Definition: fl_compositor_software.cc:69
user_data
G_BEGIN_DECLS G_MODULE_EXPORT FlValue gpointer user_data
Definition: fl_event_channel.h:90
i
int i
Definition: fl_socket_accessible.cc:18
value
uint8_t value
Definition: fl_standard_message_codec.cc:36
fl_value_new_int32_list
G_MODULE_EXPORT FlValue * fl_value_new_int32_list(const int32_t *data, size_t data_length)
Definition: fl_value.cc:309
fl_value_unref
G_MODULE_EXPORT void fl_value_unref(FlValue *self)
Definition: fl_value.cc:400
fl_value_get_int32_list
G_MODULE_EXPORT const int32_t * fl_value_get_int32_list(FlValue *self)
Definition: fl_value.cc:696
fl_value_get_length
G_MODULE_EXPORT size_t fl_value_get_length(FlValue *self)
Definition: fl_value.cc:724
FlValue
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42
lookup_node
static FlAccessibleNode * lookup_node(FlViewAccessible *self, int32_t id)
Definition: fl_view_accessible.cc:43
get_node
static FlAccessibleNode * get_node(FlViewAccessible *self, FlutterSemanticsNode2 *semantics)
Definition: fl_view_accessible.cc:50

References fl_accessible_node_set_actions(), fl_accessible_node_set_children(), fl_accessible_node_set_extents(), fl_accessible_node_set_flags(), fl_accessible_node_set_name(), fl_accessible_node_set_parent(), fl_accessible_node_set_text_direction(), fl_accessible_node_set_text_selection(), fl_accessible_node_set_value(), fl_value_get_int32_list(), fl_value_get_length(), fl_value_new_int32_list(), fl_value_unref(), g_autoptr(), get_node(), i, lookup_node(), TRUE, user_data, and value.

Referenced by TEST(), and update_semantics_cb().

## ◆ G_DECLARE_FINAL_TYPE()

G_BEGIN_DECLS G_DECLARE_FINAL_TYPE | ( | FlViewAccessible | ,
|  | fl_view_accessible | ,
|  | FL | ,
|  | VIEW_ACCESSIBLE | ,
|  | AtkPlug |
| ) |  |

FlViewAccessible:

#FlViewAccessible is an object that exposes accessibility information for an #FlView. fl_view_accessible_new: @engine: the #FlEngine. @view_id: the Flutter view id.

Creates a new accessibility object that exposes Flutter accessibility information to ATK.

Returns: a new #FlViewAccessible.

## Variable Documentation

## ◆ view_id

G_BEGIN_DECLS FlutterViewId view_id

Definition at line 49 of file fl_view_accessible.h.

Referenced by destroy_window(), fl_accessible_node_new(), fl_accessible_text_field_new(), fl_engine_add_view(), fl_engine_dispatch_semantics_action(), fl_engine_get_renderable(), fl_engine_remove_view(), fl_engine_send_mouse_pointer_event(), fl_engine_send_pointer_pan_zoom_event(), fl_engine_send_touch_add_event(), fl_engine_send_touch_down_event(), fl_engine_send_touch_move_event(), fl_engine_send_touch_remove_event(), fl_engine_send_touch_up_event(), fl_engine_send_window_metrics_event(), fl_pointer_manager_new(), fl_scrolling_manager_new(), fl_touch_manager_new(), fl_view_accessible_new(), fl_windowing_channel_make_create_regular_response(), get_window_data(), make_destroy_window_args(), make_modify_regular_args(), modify_regular(), parse_create_regular_response(), and TEST().