<Swing Dev> [10] RFR JDK-8075063:Context menu closes on mouse scroll

Semyon Sadetsky semyon.sadetsky at oracle.com
Fri Jun 16 15:27:49 UTC 2017


In lines 2337 and 2345 ungrab is also sent. Shouldn't the button number 
be checked there as well before ungrab?

--Semyon


On 06/16/2017 03:22 AM, Prasanta Sadhukhan wrote:
> Yes, it is failing in linux as it posts a UngrabEvent which causes the 
> popup to be closed in BasicPopupMenuUI at eventDispatched()
>
> if(ev instanceof sun.awt.UngrabEvent) {
>                 // Popup should be canceled in case of ungrab event
>                 cancelPopupMenu( );
>                 return;
>             }
> I have modified to not post the ungrab event if mouse wheel is rotated 
> by checking if button 4 or 5 is pressed or not.
> as per 
> https://stackoverflow.com/questions/15510472/scrollwheel-event-in-x11
> and
> ftp://www.x.org/pub/X11R6.8.0/doc/mouse.4.html [Wheel button events 
> (typically buttons 4 and 5) are usually used for scrolling]
>
> http://cr.openjdk.java.net/~psadhukhan/8075063/webrev.01/
>
> Regards
> Prasanta
> On 6/15/2017 8:55 PM, Semyon Sadetsky wrote:
>> On 06/15/2017 08:18 AM, Prasanta Sadhukhan wrote:
>>
>>>
>>>
>>> On 6/15/2017 8:40 PM, Semyon Sadetsky wrote:
>>>> On 06/14/2017 09:54 PM, Prasanta Sadhukhan wrote:
>>>>> Hi Semyon,
>>>>>
>>>>> I tried on Firefox and other app. If popup or drop down menu is 
>>>>> opened, then mouse wheel rotation is not closing the popups. In 
>>>>> our case, it is closing the popups/menus.
>>>> That is true. I meant you fixed only the case when the mouse wheel 
>>>> rotation is over java windows (wheel event's source != null). What 
>>>> will be if the wheel is rotated outside java (source == null), or 
>>>> it is not the case?
>>>>
>>> It is not closing in other app (if it rotated over non-app window) 
>>> as well as in our java with my fix.
>> Did you check this on all platforms? At least on my Ubuntu it is not so.
>>
>> --Semyon
>>>
>>> Regards
>>> Prasanta
>>>> --Semyon
>>>>>
>>>>> Regards
>>>>> Prasanta
>>>>> On 6/14/2017 8:26 PM, Semyon Sadetsky wrote:
>>>>>> Hi Prasanta,
>>>>>>
>>>>>> I may be wrong, but it seems to me that the standard behavior is 
>>>>>> when any wheel event cannot close popups.
>>>>>>
>>>>>> --Semyon
>>>>>>
>>>>>>
>>>>>> On 06/13/2017 10:39 PM, Prasanta Sadhukhan wrote:
>>>>>>> Hi All,
>>>>>>>
>>>>>>> Please review a fix for an issue whereby it is seen
>>>>>>> hitting the scroll wheel by accident closes whole structure of 
>>>>>>> context menus causing it to disappear and the user has to invoke 
>>>>>>> the menu again.
>>>>>>>
>>>>>>> Issue was popupMenu is getting closed for mouse wheel rotation 
>>>>>>> if the menu is not from JComboBox.
>>>>>>> If the context menu is opened from JMenuItem, JMenu then if the 
>>>>>>> mouse wheel is rotated anywhere in frame, then it calls 
>>>>>>> cancelPopupMenu() causing it to call setVisible(false) and so 
>>>>>>> menu disappears.
>>>>>>>
>>>>>>> Proposed fix is to check if the mouse wheel rotation is done in 
>>>>>>> JMenu, JMenuItem or anywhere in frame, then if popup is present, 
>>>>>>> then do not close the popupmenu.
>>>>>>>
>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8075063
>>>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8075063/webrev.00/
>>>>>>>
>>>>>>> Regards
>>>>>>> Prasanta
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>




More information about the swing-dev mailing list