Hello, Dmitry. I've investigated a similar issue a while ago (https://bugs.openjdk.java.net/browse/JDK-8029686), could you please check if this issue is also resolved by your fix?
> In other words the current implementation assumes that the grabbingWindow > must be an instance of Frame or Dialog and does not handle the case when the > grabbingWindow is JWindow. When I was investigating this I did not understand why that was done that way. Do you know the reason? May be it's better not in introduce a new function but replace the getOwnerFrameDialog with your new implementation? Thank you. With best regards. Petr. On 03.03.2014, at 13:45, dmitry markov <dmitry.mar...@oracle.com> wrote: > Hi Sergey, > > The current implementation of LWWindowPeer.getOwnerFrameDialog() may return > an instance of Frame or Dialog. The returned value used to check whether the > grabbingWindow is owner of mouse event target or not. > > If JComboBox is added to JFrame, the grabbingWindow is JFrame and > getOwnerFrameDialog() returns the same JFrame object, (i.e. the check passes). > If JCombobox is added to JWindow which is owned by JFrame, the grabbingWindow > is JWindow but getOwnerFrameDialog() returns the JFrame, (i.e. the check > fails). > > In other words the current implementation assumes that the grabbingWindow > must be an instance of Frame or Dialog and does not handle the case when the > grabbingWindow is JWindow. > > Thanks, > Dmitry > > On 03/03/2014 13:01, Sergey Bylokhov wrote: >> Hi, Dmitry. >> Why the problem is reproduced in JWindow? Why it works in JFrame? >> >> On 3/3/14 10:40 AM, dmitry markov wrote: >>> Hello, >>> >>> Could you review the fix for jdk9, please? >>> >>> bug: https://bugs.openjdk.java.net/browse/JDK-8032872 >>> webrev: http://cr.openjdk.java.net/~dmarkov/8032872/jdk9/webrev.00/ >>> >>> Problem description: It is impossible to make a selection in JComboBox >>> added to JWindow via the mouse. The problem is caused by incorrect mouse >>> events handling in LWWindowPeer class. When LWWindowPeer receives a mouse >>> event intended for a popup window, it checks whether the current >>> grabbingWindow is owner of the popup using getOwnerFrameDialog() method. >>> This approach always fails for the JComboBox added to JWindow. As a result >>> an UngrabEvent is send to the popup window. >>> >>> Fix: Introduce new private method LWWindowPeer.isOneOfOwnersOf(LWWindowPeer >>> peer). The method will be invoked on grabbingWindow object to test whether >>> it is owner of current mouse event target or not. The usage of >>> getOwnerFrameDialog() should be replaced by isOneOfOwnersOf() in >>> LWWindowPeer.notifyMouseEvent() and LWWindowPeer.NotifyNCMouseDown(). >>> >>> Thanks, >>> Dmitry >> >> >