Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 09eac81

Browse files
Limit selection change to focused node on Windows
1 parent ebf01dc commit 09eac81

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

shell/platform/common/accessibility_bridge_unittests.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,9 @@ TEST(AccessibilityBridgeTest, canHandleSelectionChangeCorrectly) {
152152
std::shared_ptr<TestAccessibilityBridge> bridge =
153153
std::make_shared<TestAccessibilityBridge>();
154154
FlutterSemanticsNode root = CreateSemanticsNode(0, "root");
155-
root.flags = FlutterSemanticsFlag::kFlutterSemanticsFlagIsTextField;
155+
root.flags = static_cast<FlutterSemanticsFlag>(
156+
FlutterSemanticsFlag::kFlutterSemanticsFlagIsTextField |
157+
FlutterSemanticsFlag::kFlutterSemanticsFlagIsFocused);
156158
bridge->AddFlutterSemanticsNodeUpdate(&root);
157159
bridge->CommitUpdates();
158160

shell/platform/windows/accessibility_bridge_windows.cc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,16 @@ void AccessibilityBridgeWindows::OnAccessibilityEvent(
4141
DispatchWinAccessibilityEvent(win_delegate,
4242
ax::mojom::Event::kChildrenChanged);
4343
break;
44-
case ui::AXEventGenerator::Event::DOCUMENT_SELECTION_CHANGED:
44+
case ui::AXEventGenerator::Event::DOCUMENT_SELECTION_CHANGED: {
45+
ui::AXNode::AXID focus_id = GetAXTreeData().sel_focus_object_id;
46+
auto focus_delegate =
47+
GetFlutterPlatformNodeDelegateFromID(focus_id).lock();
4548
DispatchWinAccessibilityEvent(
46-
win_delegate, ax::mojom::Event::kDocumentSelectionChanged);
49+
std::static_pointer_cast<FlutterPlatformNodeDelegateWindows>(
50+
focus_delegate),
51+
ax::mojom::Event::kDocumentSelectionChanged);
4752
break;
53+
}
4854
case ui::AXEventGenerator::Event::FOCUS_CHANGED:
4955
DispatchWinAccessibilityEvent(win_delegate, ax::mojom::Event::kFocus);
5056
SetFocus(win_delegate);

0 commit comments

Comments
 (0)