On Fri, 11 Dec 2020 10:18:12 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> wrote:
>> In case of the first attempt to bring down the popup menu the event was >> consumed by following code of BasicPopupMenuUI >> boolean consumeEvent = >> >> UIManager.getBoolean("PopupMenu.consumeEventOnClose"); >> // Consume the event so that normal processing stops. >> if(consumeEvent && !(src instanceof MenuElement)) { >> me.consume(); >> } >> The PopupMenu.consumeEventOnClose is true for Windows, Motif, Nimbus, and >> GTK LAF and this issue is seen in all these LookAndFeels. >> For Metal LAF this variable is never set to true so it uses of >> BasicLookAndFeel which is set to FALSE >> This issue is not seen on MetalLAF. >> >> So changed PopupMenu.consumeEventOnClose to FALSE for Windows, Motif, >> Nimbus, and GTK LAF and >> it fixes the issue. > > Any idea why commenting popup.setInvoker(jtb); line in the test works even > without the fix? In case of commenting popup.setInvoker(jtb); the following line of code in BasicPopupMenuUI is never called boolean consumeEvent =UIManager.getBoolean("PopupMenu.consumeEventOnClose"); // Consume the event so that normal processing stops. if(consumeEvent && !(src instanceof MenuElement)) { me.consume(); } So the event is not consumed here by me.consume() and the the issue is not seen. ------------- PR: https://git.openjdk.java.net/jdk/pull/600