24 std::weak_ptr<AccessibilityBridge> bridge,
26 : bridge_(
std::move(bridge)), view_controller_(view_controller) {}
35 NSCAssert(ax_platform_node_,
@"Failed to create platform node.");
55 NSCAssert(ax_platform_node_,
@"Platform node does not exist.");
62 NSCAssert(view_controller_.viewLoaded,
@"Flutter view must be loaded");
63 return view_controller_.flutterView;
73 coordinate_system, clipping_behavior, offscreen_result);
75 gfx::RectF screen_bounds = ConvertBoundsFromLocalToScreen(local_bounds_f);
93 auto bridge_ptr = bridge_.lock();
94 NSCAssert(bridge_ptr,
@"Accessibility bridge in flutter engine must not be null.");
96 auto delegate_child = bridge_ptr->GetFlutterPlatformNodeDelegateFromID(child).lock();
97 if (!delegate_child) {
100 text += std::static_pointer_cast<FlutterPlatformNodeDelegateMac>(delegate_child)
101 ->GetLiveRegionText();
106gfx::RectF FlutterPlatformNodeDelegateMac::ConvertBoundsFromLocalToScreen(
109 NSRect ns_local_bounds =
110 NSMakeRect(local_bounds.
x(), local_bounds.
y(), local_bounds.
width(), local_bounds.
height());
115 ns_local_bounds.origin.y = -ns_local_bounds.origin.y - ns_local_bounds.size.height;
117 NSCAssert(view_controller_.viewLoaded,
@"Flutter view must be loaded.");
118 NSRect ns_view_bounds = [view_controller_.flutterView convertRectFromBacking:ns_local_bounds];
119 NSRect ns_window_bounds = [view_controller_.flutterView convertRect:ns_view_bounds toView:nil];
120 NSRect ns_screen_bounds =
121 [[view_controller_.flutterView
window] convertRectToScreen:ns_window_bounds];
122 gfx::RectF screen_bounds(ns_screen_bounds.origin.x, ns_screen_bounds.origin.y,
123 ns_screen_bounds.size.width, ns_screen_bounds.size.height);
124 return screen_bounds;
127gfx::RectF FlutterPlatformNodeDelegateMac::ConvertBoundsFromScreenToGlobal(
131 NSScreen* screen = [[NSScreen screens] firstObject];
132 NSRect primary_screen_bounds = [screen frame];
134 float flipped_y = primary_screen_bounds.
size.
height - screen_bounds.
y() - screen_bounds.
height();
135 return {screen_bounds.
x(), flipped_y, screen_bounds.
width(), screen_bounds.
height()};
The ax platform node for a text field.
constexpr float y() const
constexpr float width() const
constexpr float height() const
constexpr const SizeF & size() const
constexpr float x() const
constexpr float height() const
IBOutlet NSWindow * mainFlutterWindow
Rect ToEnclosingRect(const RectF &r)
UnimplementedNativeViewAccessible * NativeViewAccessible
std::vector< int32_t > child_ids
const std::string & GetStringAttribute(ax::mojom::StringAttribute attribute) const