The following issue has me puzzled : I have an SWT Java application and switching from SWT 3 to SWT 4 creates a strange behaviour of the KeyDown event in the following circumstances :

I have one shell containing a Browser widget. I am listening to KeyDown events at the Java level, via a filter on the Display object, as shown below. When such an event is detected, I then call the execute() function of the Browser widget in order to execute some javascript. I chose to detect the KeyDown event at the global java level and not directly in javascript because the browser may not necessarily have the focus at that moment.

Expected behaviour : the KeyDown event should be detected once

Actual behaviour : the KeyDown event is detected three times

What I tried and learned so far :
1) The problem only happens when the Browser widget is used.
2) The problem happens not only when executing some javascript, it also happens if I simply set the content of the browser (br.setText("...")), so it seems any action on the browser triggers the problem.
3) The problem doesn't happen with SWT 3.836. It happens with SWT 4.924

Reverting back to SWT 3 is not an ideal option, because it caused a lot of crashes due to libwebkitgtk, and I got rid of those with SWT 4...

Configuration : Ubuntu 18.04, Java openjdk 11 adm64, SWT 4.924 (downloaded from Eclipse download page latest stable version 4.14M1)

Here is the code :

```
public static void main(String[] args) {
    System.out.println("Launching test application");

    Display display = new Display();
    Shell shell = new Shell(display);

    Browser br = new Browser(shell,SWT.NONE);
    br.setSize(500,500);

    display.addFilter(SWT.KeyDown, new Listener() {

        @Override
        public void handleEvent(Event event) {
            System.out.println(event.keyCode);
            //Try either of the following two lines to reproduce the problem. If you comment both lines, the problem disappears
            br.execute("javascript:alert('hello')");
            //br.setText("<html><head></head><body>TEST</body></html>");
        }
    });

    shell.open();

    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
         {
            display.sleep();
         }
    }
}

```

Any hints ? Thanks in advance !