RFR: 8245575: Show the ContextMenu of input controls with long press gesture on iOS

Jose Pereda jpereda at openjdk.java.net
Mon Jun 8 09:40:24 UTC 2020


On Mon, 8 Jun 2020 09:24:32 GMT, Johan Vos <jvos at openjdk.org> wrote:

>> This PR uses iOS long press gesture to generate a menu event that will trigger a `ContextMenuEvent`.
>> 
>> Based on this event, input controls will show the ContextMenu (once JDK-8245499 is fixed), and if required, a developer
>> could add an event handler based on `ContextMenuEvent.CONTEXT_MENU_REQUESTED` for custom processing of such event.
>
> modules/javafx.graphics/src/main/native-glass/ios/GlassViewDelegate.m line 385:
> 
>> 384:     } else if (sender.state == UIGestureRecognizerStateEnded) {
>> 385:         // Prevent touch ended event
>> 386:         self.mouseTouch = nil;
> 
> no release event needed?

The "right-click" event (enter+right down) is simulated when the long press event is detected
(`UIGestureRecognizerStateBegan `, which happens after 0.5 seconds by default). This will trigger the ContextMenu.

However, the user is still pressing for a few more time. After releasing the tap, (`UIGestureRecognizerStateEnded`),
there is no need of adding a release event (exit+right up), as this will probably will close the ContextMenu. The user
now can select any of the options from the menu, or simply tap elsewhere to close it.

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

PR: https://git.openjdk.java.net/jfx/pull/232


More information about the openjfx-dev mailing list