| Flutter Windows Embedder |

Public Member Functions | List of all members
flutter::FlutterPlatformNodeDelegateWindows Class Reference

`#include <flutter_platform_node_delegate_windows.h>`

Inheritance diagram for flutter::FlutterPlatformNodeDelegateWindows:

## Public Member Functions
| FlutterPlatformNodeDelegateWindows (std::weak_ptr< AccessibilityBridge > bridge, FlutterWindowsView *view)
virtual | ~FlutterPlatformNodeDelegateWindows ()
void | Init (std::weak_ptr< OwnerBridge > bridge, ui::AXNode *node) override
| Called only once, immediately after construction. The constructor doesn't take any arguments because in the Windows subclass we use a special function to construct a COM object. Subclasses must call super. More...
gfx::NativeViewAccessible | GetNativeViewAccessible () override
gfx::NativeViewAccessible | HitTestSync (int screen_physical_pixel_x, int screen_physical_pixel_y) const override
gfx::Rect | GetBoundsRect (const ui::AXCoordinateSystem coordinate_system, const ui::AXClippingBehavior clipping_behavior, ui::AXOffscreenResult *offscreen_result) const override
virtual void | DispatchWinAccessibilityEvent (ax::mojom::Event event_type)
void | SetFocus ()
gfx::AcceleratedWidget | GetTargetForNativeAccessibilityEvent () override
ui::AXPlatformNode * | GetPlatformNode () const override
Public Member Functions inherited from flutter::FlutterPlatformNodeDelegate
| FlutterPlatformNodeDelegate ()
virtual | ~FlutterPlatformNodeDelegate () override
const ui::AXUniqueId & | GetUniqueId () const override
const ui::AXNodeData & | GetData () const override
bool | AccessibilityPerformAction (const ui::AXActionData &data) override
gfx::NativeViewAccessible | GetParent () override
gfx::NativeViewAccessible | GetFocus () override
int | GetChildCount () const override
gfx::NativeViewAccessible | ChildAtIndex (int index) override
gfx::Rect | GetBoundsRect (const ui::AXCoordinateSystem coordinate_system, const ui::AXClippingBehavior clipping_behavior, ui::AXOffscreenResult *offscreen_result) const override
gfx::NativeViewAccessible | GetLowestPlatformAncestor () const override
ui::AXNodePosition::AXPositionInstance | CreateTextPositionAt (int offset) const override
ui::AXNode * | GetAXNode () const
| Gets the underlying ax node for this platform node delegate. More...
std::weak_ptr< OwnerBridge > | GetOwnerBridge () const
| Gets the owner of this platform node delegate. This is useful when you want to get the information about surrounding nodes of this platform node delegate, e.g. the global rect of this platform node delegate. This pointer is only safe in the platform thread. More...
virtual ui::AXPlatformNode * | GetFromNodeID (int32_t id) override
virtual ui::AXPlatformNode * | GetFromTreeIDAndNodeID (const ui::AXTreeID &tree_id, int32_t node_id) override
virtual const ui::AXTree::Selection | GetUnignoredSelection () const override

## Detailed Description

Definition at line 20 of file flutter_platform_node_delegate_windows.h.

## Constructor & Destructor Documentation

## ◆ FlutterPlatformNodeDelegateWindows()

flutter::FlutterPlatformNodeDelegateWindows::FlutterPlatformNodeDelegateWindows | ( | std::weak_ptr< AccessibilityBridge > | bridge,
|  | FlutterWindowsView * | view
| ) |  |

Definition at line 18 of file flutter_platform_node_delegate_windows.cc.

21 : bridge_(bridge), view_(view) {
22 FML_DCHECK(!bridge_.expired())
23 << "Expired AccessibilityBridge passed to node delegate";
24 FML_DCHECK(view_);
25 }

## ◆ ~FlutterPlatformNodeDelegateWindows()

flutter::FlutterPlatformNodeDelegateWindows::~FlutterPlatformNodeDelegateWindows | ( |  | ) |
| virtual

Definition at line 27 of file flutter_platform_node_delegate_windows.cc.

27 {
28 if (ax_platform_node_) {
29 ax_platform_node_->Destroy();
30 }
31 }

## Member Function Documentation

## ◆ DispatchWinAccessibilityEvent()

void flutter::FlutterPlatformNodeDelegateWindows::DispatchWinAccessibilityEvent | ( | ax::mojom::Event | event_type | ) |
| virtual

Definition at line 96 of file flutter_platform_node_delegate_windows.cc.

97 {
98 ax_platform_node_->NotifyAccessibilityEvent(event_type);
99 }

References event_type.

## ◆ GetBoundsRect()

gfx::Rect flutter::FlutterPlatformNodeDelegateWindows::GetBoundsRect | ( | const ui::AXCoordinateSystem | coordinate_system,
|  | const ui::AXClippingBehavior | clipping_behavior,
|  | ui::AXOffscreenResult * | offscreen_result
| ) |  | const
| override

Definition at line 82 of file flutter_platform_node_delegate_windows.cc.

85 {
86 gfx::Rect bounds = FlutterPlatformNodeDelegate::GetBoundsRect(
87 coordinate_system, clipping_behavior, offscreen_result);
88 POINT origin{bounds.x(), bounds.y()};
89 POINT extent{bounds.x() + bounds.width(), bounds.y() + bounds.height()};
90 ClientToScreen(view_->GetWindowHandle(), &origin);
91 ClientToScreen(view_->GetWindowHandle(), &extent);
92 return gfx::Rect(origin.x, origin.y, extent.x - origin.x,
93 extent.y - origin.y);
94 }

References flutter::FlutterPlatformNodeDelegate::GetBoundsRect(), and flutter::FlutterWindowsView::GetWindowHandle().

Referenced by HitTestSync().

## ◆ GetNativeViewAccessible()

gfx::NativeViewAccessible flutter::FlutterPlatformNodeDelegateWindows::GetNativeViewAccessible | ( |  | ) |
| override

Definition at line 43 of file flutter_platform_node_delegate_windows.cc.

43 {
44 FML_DCHECK(ax_platform_node_) << "AXPlatformNode hasn't been created";
45 return ax_platform_node_->GetNativeViewAccessible();
46 }

Referenced by SetFocus().

## ◆ GetPlatformNode()

ui::AXPlatformNode * flutter::FlutterPlatformNodeDelegateWindows::GetPlatformNode | ( |  | ) | const
| override virtual

Reimplemented from flutter::FlutterPlatformNodeDelegate.

Definition at line 113 of file flutter_platform_node_delegate_windows.cc.

114 {
115 return ax_platform_node_;
116 }

## ◆ GetTargetForNativeAccessibilityEvent()

gfx::AcceleratedWidget flutter::FlutterPlatformNodeDelegateWindows::GetTargetForNativeAccessibilityEvent | ( |  | ) |
| override

Definition at line 109 of file flutter_platform_node_delegate_windows.cc.

109 {
110 return view_->GetWindowHandle();
111 }

References flutter::FlutterWindowsView::GetWindowHandle().

## ◆ HitTestSync()

gfx::NativeViewAccessible flutter::FlutterPlatformNodeDelegateWindows::HitTestSync | ( | int | screen_physical_pixel_x,
|  | int | screen_physical_pixel_y
| ) |  | const
| override

Definition at line 49 of file flutter_platform_node_delegate_windows.cc.

51 {
52 // If this node doesn't contain the point, return.
53 ui::AXOffscreenResult result;
54 gfx::Rect rect = GetBoundsRect(ui::AXCoordinateSystem::kScreenPhysicalPixels,
55 ui::AXClippingBehavior::kUnclipped, &result);
56 gfx::Point screen_point(screen_physical_pixel_x, screen_physical_pixel_y);
57 if (!rect.Contains(screen_point)) {
58 return nullptr;
59 }
60
61 // If any child in this node's subtree contains the point, return that child.
62 auto bridge = bridge_.lock();
63 FML_DCHECK(bridge);
64 for (const ui::AXNode* child : GetAXNode()->children()) {
65 std::shared_ptr<FlutterPlatformNodeDelegateWindows> win_delegate =
66 std::static_pointer_cast<FlutterPlatformNodeDelegateWindows>(
67 bridge->GetFlutterPlatformNodeDelegateFromID(child->id()).lock());
68 FML_DCHECK(win_delegate)
69 << "No FlutterPlatformNodeDelegate found for node " << child->id();
70 auto hit_view = win_delegate->HitTestSync(screen_physical_pixel_x,
71 screen_physical_pixel_y);
72 if (hit_view) {
73 return hit_view;
74 }
75 }
76
77 // If no children contain the point, but this node does, return this node.
78 return ax_platform_node_->GetNativeViewAccessible();
79 }

References flutter::FlutterPlatformNodeDelegate::GetAXNode(), and GetBoundsRect().

## ◆ Init()

void flutter::FlutterPlatformNodeDelegateWindows::Init | ( | std::weak_ptr< OwnerBridge > | bridge,
|  | ui::AXNode * | node
| ) |  |
| override virtual

Called only once, immediately after construction. The constructor doesn't take any arguments because in the Windows subclass we use a special function to construct a COM object. Subclasses must call super.

Reimplemented from flutter::FlutterPlatformNodeDelegate.

Definition at line 34 of file flutter_platform_node_delegate_windows.cc.

35 {
36 FlutterPlatformNodeDelegate::Init(bridge, node);
37 ax_platform_node_ = ui::AXPlatformNode::Create(this);
38 FML_DCHECK(ax_platform_node_) << "Failed to create AXPlatformNode";
39 }

References flutter::FlutterPlatformNodeDelegate::Init().

## ◆ SetFocus()

void flutter::FlutterPlatformNodeDelegateWindows::SetFocus | ( |  | ) |

Definition at line 101 of file flutter_platform_node_delegate_windows.cc.

101 {
102 VARIANT varchild{};
103 varchild.vt = VT_I4;
104 varchild.lVal = CHILDID_SELF;
105 GetNativeViewAccessible()->accSelect(SELFLAG_TAKEFOCUS, varchild);
106 }

References GetNativeViewAccessible().

The documentation for this class was generated from the following files:

- shell/platform/windows/flutter_platform_node_delegate_windows.h
- shell/platform/windows/flutter_platform_node_delegate_windows.cc

flutter::FlutterPlatformNodeDelegateWindows::GetNativeViewAccessible
gfx::NativeViewAccessible GetNativeViewAccessible() override
Definition: flutter_platform_node_delegate_windows.cc:43
flutter::FlutterPlatformNodeDelegate::Init
virtual void Init(std::weak_ptr< OwnerBridge > bridge, ui::AXNode *node)
Called only once, immediately after construction. The constructor doesn't take any arguments because ...
Definition: flutter_platform_node_delegate.cc:20
flutter::FlutterPlatformNodeDelegateWindows::GetBoundsRect
gfx::Rect GetBoundsRect(const ui::AXCoordinateSystem coordinate_system, const ui::AXClippingBehavior clipping_behavior, ui::AXOffscreenResult *offscreen_result) const override
Definition: flutter_platform_node_delegate_windows.cc:82
flutter::FlutterWindowsView::GetWindowHandle
virtual HWND GetWindowHandle() const
Definition: flutter_windows_view.cc:645
flutter::FlutterPlatformNodeDelegate::GetBoundsRect
gfx::Rect GetBoundsRect(const ui::AXCoordinateSystem coordinate_system, const ui::AXClippingBehavior clipping_behavior, ui::AXOffscreenResult *offscreen_result) const override
Definition: flutter_platform_node_delegate.cc:94
flutter::FlutterPlatformNodeDelegate::GetAXNode
ui::AXNode * GetAXNode() const
Gets the underlying ax node for this platform node delegate.
Definition: flutter_platform_node_delegate.cc:26
event_type
ax::mojom::Event event_type
Definition: accessibility_bridge_windows_unittests.cc:33