Skip to content

Commit 1079f40

Browse files
committed
Edge browser sends KeyEvent asynchronously
Edge:handleAcceleratorKeyPressed must handle Browser:sendKeyEvent asynchronously as KeyEvent's Listeners can cause deadlock. Hence, the Handled of this event is set if there exists a listener for the event or a Display filter.
1 parent 8b10d1c commit 1079f40

File tree

1 file changed

+6
-3
lines changed
  • bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser

1 file changed

+6
-3
lines changed

bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/Edge.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1573,9 +1573,12 @@ int handleAcceleratorKeyPressed(long pView, long pArgs) {
15731573
return COM.S_OK;
15741574
}
15751575

1576-
if (!sendKeyEvent(keyEvent)) {
1577-
args.put_Handled(true);
1578-
}
1576+
asyncExec(() -> {
1577+
sendKeyEvent(keyEvent);
1578+
});
1579+
1580+
boolean hasListener = browser.getListeners(keyEvent.type).length != 0 || browser.filters(keyEvent.type);
1581+
args.put_Handled(hasListener);
15791582
} else {
15801583
keyEvent.type = SWT.KeyUp;
15811584
browser.notifyListeners (keyEvent.type, keyEvent);

0 commit comments

Comments
 (0)