--- old/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboPopup.java 2017-09-21 16:24:34.000000000 +0100 +++ new/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicComboPopup.java 2017-09-21 16:24:34.000000000 +0100 @@ -36,6 +36,8 @@ import java.beans.PropertyChangeEvent; import java.io.Serializable; +import sun.awt.AWTAccessor; +import sun.awt.AWTAccessor.MouseEventAccessor; /** * This is a basic implementation of the ComboPopup interface. @@ -534,13 +536,18 @@ // Fix for 4234053. Filter out the Control Key from the list. // ie., don't allow CTRL key deselection. Toolkit toolkit = Toolkit.getDefaultToolkit(); - e = new MouseEvent((Component)e.getSource(), e.getID(), e.getWhen(), + MouseEvent newEvent = new MouseEvent( + (Component)e.getSource(), e.getID(), e.getWhen(), e.getModifiers() ^ toolkit.getMenuShortcutKeyMask(), e.getX(), e.getY(), e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger(), MouseEvent.NOBUTTON); + MouseEventAccessor meAccessor = AWTAccessor.getMouseEventAccessor(); + meAccessor.setCausedByTouchEvent(newEvent, + meAccessor.isCausedByTouchEvent(e)); + e = newEvent; } super.processMouseEvent(e); } @@ -1251,6 +1258,9 @@ e.getClickCount(), e.isPopupTrigger(), MouseEvent.NOBUTTON ); + MouseEventAccessor meAccessor = AWTAccessor.getMouseEventAccessor(); + meAccessor.setCausedByTouchEvent(newEvent, + meAccessor.isCausedByTouchEvent(e)); return newEvent; }