From 0966efd81f71034ed9b8060a2276236e105687c4 Mon Sep 17 00:00:00 2001 From: Heiko Klare Date: Sun, 19 Jul 2026 00:03:21 +0200 Subject: [PATCH] Find/replace overlay tests: correctly dispatch simulated key events OverlayAccess.simulateKeyboardInteractionInFindInputField() simulated a keystroke by notifying listeners on a wrapper widget that internally forwards the event to two different widgets. Since SWT's global event filters react to a dispatched event regardless of which widget triggered it, this caused a single simulated keystroke to be processed twice by anything hooking into such a global filter, such as Eclipse's key-binding dispatch. This currently has no effect, since the overlay's own key handling only relies on a listener attached directly to the actual text control, not on any global event filter. It would, however, cause a command bound to a key sequence through Eclipse's key-binding infrastructure to execute twice per simulated keystroke. With this change, the synthetic event is dispatched directly on the search text control instead, matching how a single real keystroke is delivered. Co-authored-by: Claude Sonnet 5 --- .../ui/internal/findandreplace/overlay/OverlayAccess.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/OverlayAccess.java b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/OverlayAccess.java index 1b0c0d70150..281a7a005fc 100644 --- a/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/OverlayAccess.java +++ b/tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/OverlayAccess.java @@ -144,7 +144,7 @@ public void simulateKeyboardInteractionInFindInputField(int keyCode, boolean shi event.stateMask= SWT.SHIFT; } event.keyCode= keyCode; - find.notifyListeners(SWT.KeyDown, event); + find.getTextBar().notifyListeners(SWT.KeyDown, event); runEventQueue(); }