On Tue, 1 Apr 2025 17:31:14 GMT, Jose Pereda <jper...@openjdk.org> wrote:

> Note: The JBS issue 
> [JDK-8207333](https://bugs.openjdk.org/browse/JDK-8207333) refers to Linux, 
> but it happens on macOS too. 
> 
> When a TableColumn has a ContextMenu, if the user right clicks on the 
> tableColumnHeader, the ContextMenu shows up, but, as described on the issue, 
> on macOS and Linux, the table gets sorted as well.
> 
> Currently, `TableColumnHeader#mouseReleasedHandler` checks for 
> `MouseEvent::isPopupTriggered`, but it doesn't have a check on 
> `mousePressed`. However,  it can be seen that a right click on the header has 
> the following values for `MouseEvent:: isPopupTriggered` on the different 
> platforms and mouse pressed and released events:
> 
> | isPopupTriggered on: | Windows  | macOS | Linux |
> | ------------- | ------------- | ------------- | ------------- |
> | mousePressed  | false  | true | true |
> | mouseReleased  | true  | false | falseĀ |
> 
> Also, the JavaDoc for `MouseEvent::isPopupTriggered` clearly states that:
> 
>> **Note**: Popup menus are triggered differently on different systems. 
>> Therefore, `popupTrigger` should be checked in both `onMousePressed` and 
>> `mouseReleased` for proper cross-platform functionality.
> 
> Therefore, this PR adds a check to `MouseEvent::isPopupTrigger` in the mouse 
> pressed event, that can be used later on to cancel the header sorting when 
> the mouse released event happens.
> 
> Also a system test has been added. It fails on macOS and Linux, and passes on 
> Windows before this PR, and passes on the three platforms with this PR.

thank you for fixing this bug, @jperedadnr !

testing with the monkey tester looks good on macOS 15.3.2 and windows 11.

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

Marked as reviewed by angorya (Reviewer).

PR Review: https://git.openjdk.org/jfx/pull/1754#pullrequestreview-2733727401

Reply via email to