On Wed, 12 Feb 2025 20:15:03 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

> ## Root Cause
> 
> The ContextMenu (PopupWindow) cannot be shown in a background thread.
> 
> ## Solution
> 
> Bail out of `show()` if in a background thread.

I'm not convinced that this is the right solution.

`Node` says:

 * Node objects may be constructed and modified on any thread as long they are
 * not yet attached to a {@link Scene} in a {@link Window} that is
 * {@link Window#isShowing showing}.


It's not clear to me that invoking actions on a node should count as 
"modifying", and there is no specification that says it's okay to invoke 
actions on a non-UI thread. I'd rather have actions throw an exception if they 
are invoked on a background thread, rather than silently not doing anything at 
all.

It's one thing to configure (i.e. modify) properties of a node, and then show 
it in the scene graph; it's another thing to tell it to do something it can't 
do in its current state.

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

PR Comment: https://git.openjdk.org/jfx/pull/1709#issuecomment-2655033677

Reply via email to