I've investigated this issue and couldn't find a situation where the call to XToolkit.targetDisposedPeer() from XBaseMenuWindow.doDispose() would make sense (we call XToolkit.targetDisposedPeer() with correct targets in XPopupMenuPeer and XMenuBarPeer), so I decided to remove it to avoid any confusion in the future. We still have the time to fix any regressions, in case they arise. Here is an updated webrev:
http://cr.openjdk.java.net/~leonidr/8023994/webrev.01/ On Sep 27, 2013, at 9:33 PM, Leonid Romanov <leonid.roma...@oracle.com> wrote: > Yes, this code looked suspicious for me as well, I suspect it is a result of > copy pasting XWindow's dispose() code. For a wrong peer/target pair, > XToolkit.targetDisposedPeer() is a no-op, so no harm is done, but perhaps it > makes sense to remove that call altogether. I'll check it. > > On Sep 27, 2013, at 9:25 PM, Sergey Bylokhov <sergey.bylok...@oracle.com> > wrote: > >> Hi, Leonid. >> In this case the code in the XBaseMenuWindow.doDispose() call >> XToolkit.targetDisposedPeer(target, this); for the wrong target? Or probably >> this target is alwase null? >> >> On 27.09.2013 20:32, Leonid Romanov wrote: >>> Hello, >>> Please review a fix for 8023994: Right click on the icon added to the >>> system tray for the first time, java.lang.IllegalArgumentException thrown. >>> The problem here is that for popup menus the "target" field of >>> XBaseMenuWindow class is not a MenuComponent corresponding to the popup, >>> but a component for which the popup is being shown. Therefore, if the menu >>> has never been shown, the the target is null, so we can't use it for the >>> InvocationEvent in dispose(). >>> >>> Bug: https://bugs.openjdk.java.net/browse/JDK-8023994 >>> Webrev: http://cr.openjdk.java.net/~leonidr/8023994/webrev.00/ >>> >>> Thanks, >>> Leonid. >>> >>> >>> >> >> >> -- >> Best regards, Sergey. >> >