Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [platform-ui-dev] IMenuCreator.dispose() not being called [2.0.1]

Randy,

The correct place for bug reports is in bugzilla.

Thanks,
Nick





Randy Hudson <hudsonr@xxxxxxxxxx>
Sent by: platform-ui-dev-admin@xxxxxxxxxxx
11/06/02 02:46 PM
Please respond to platform-ui-dev

 
        To:     platform-ui-dev@xxxxxxxxxxx
        cc: 
        Subject:        [platform-ui-dev] IMenuCreator.dispose() not being called [2.0.1]



I cannot find any code in the Workbench that calls IMenuCreator.dispose(). 
 I have created a drop-down Action similar to the NewWizardDropDownAction. 

ActionContributionItem asks for the menu (getMenu(Control)), but then it 
never calls dispose on the IMenuCreator.  And I don't think it calls 
dispose on the Menu either.  The SWT Menu will stay around for a long 
time, even if the Action it removed from the Toolbar.  The SWT Menu goes 
away only if the User closes the WorkbenchWindow.  SWT is keeping track of 
all menus hosted by a Shell, and it disposes them if they are still 
hanging around. 

If this is still true, it looks like the fix would be in 
ActionContributionItem#handleWidgetDispose().  It should see if the style 
is DROP_DOWN, and ask the IMenuCreator to dispose(). 

private void handleWidgetDispose(Event e) { 
>        if (action.getStyle() == IAction.AS_DROP_DOWN_MENU) 
>                action.getMenuCreator().dipose(); 
        if (e.widget == widget) { 
                // the item is being disposed 
                action.removePropertyChangeListener(listener); 
                widget = null; 
        } 
}




Back to the top