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.
>> 
> 

Reply via email to