RFR: 8207759: VK_ENTER not consumed by TextField when default Button exists [v3]

John Hendrikx jhendrikx at openjdk.org
Sat Nov 9 00:24:54 UTC 2024


On Fri, 8 Nov 2024 22:05:15 GMT, Martin Fox <mfox at openjdk.org> wrote:

> FWIW, checking the isConsumed flag will only work if the action is consumed by a handler registered directly with the TextField. If there's a filter or handler attached to some other part of the scene graph a copy of the event will be made and consumed and `actionEvent.isConsumed()` will return false. A more complete fix is to replace `textField.fireEvent` with a call to `EventUtil.fireEvent` and check for a `null` return value.

It seems that an earlier check I did to see if events are copied wasn't done correctly.  Indeed events are copied at every filter/handler.  That does seem excessive.  It also makes the public `Node#fireEvent` a bit useless for proper event propagation for normal users that don't have access to `EventUtil`.

I checked the events that are copied, and it is basically making the copy to adjust the source (target remains constant).  That's really odd; I'd expect the source to remain the same as well (ie. the Scene or Window, not the "previous" filter/handler Node level), especially as it is documented as:

    /**
     * The object on which the Event initially occurred.
     *
     * @return the object on which the Event initially occurred
     */
    public Object getSource() {
        return source;
    }

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/15#discussion_r1835173141


More information about the openjfx-dev mailing list