diff options
author | Christoph Läubrich | 2019-10-18 15:45:07 +0000 |
---|---|---|
committer | Christoph Laeubrich | 2020-03-26 07:00:00 +0000 |
commit | 1048abd609e00d1a2c6fec6c200b81ce02c32076 (patch) | |
tree | 67fe818a743cfcabd95e733e12a1325337718e5c /tests | |
parent | afd85d5706066f35bd95684bba74bdfbdba9abd8 (diff) | |
download | eclipse.platform.swt-1048abd609e00d1a2c6fec6c200b81ce02c32076.tar.gz eclipse.platform.swt-1048abd609e00d1a2c6fec6c200b81ce02c32076.tar.xz eclipse.platform.swt-1048abd609e00d1a2c6fec6c200b81ce02c32076.zip |
Bug 552223 - [cocoa] NPE in Menu._setVisible when clicking a menuitem of
a disposed menu
Change-Id: I9c8c59418c5fbfc8581c5d7cc55526c5d0465a09
Signed-off-by: Christoph Läubrich <laeubi@laeubi-soft.de>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/org.eclipse.swt.tests.cocoa/.classpath | 1 | ||||
-rw-r--r-- | tests/org.eclipse.swt.tests.cocoa/Manual Tests/org/eclipse/swt/tests/cocoa/snippets/Bug_552223_NPE_Menu_setVisible.java | 77 |
2 files changed, 78 insertions, 0 deletions
diff --git a/tests/org.eclipse.swt.tests.cocoa/.classpath b/tests/org.eclipse.swt.tests.cocoa/.classpath index 2d54539e87..de390a23fc 100644 --- a/tests/org.eclipse.swt.tests.cocoa/.classpath +++ b/tests/org.eclipse.swt.tests.cocoa/.classpath @@ -3,5 +3,6 @@ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="src" path="JUnit Tests"/> + <classpathentry kind="src" path="Manual Tests"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/tests/org.eclipse.swt.tests.cocoa/Manual Tests/org/eclipse/swt/tests/cocoa/snippets/Bug_552223_NPE_Menu_setVisible.java b/tests/org.eclipse.swt.tests.cocoa/Manual Tests/org/eclipse/swt/tests/cocoa/snippets/Bug_552223_NPE_Menu_setVisible.java new file mode 100644 index 0000000000..dc21887345 --- /dev/null +++ b/tests/org.eclipse.swt.tests.cocoa/Manual Tests/org/eclipse/swt/tests/cocoa/snippets/Bug_552223_NPE_Menu_setVisible.java @@ -0,0 +1,77 @@ +/******************************************************************************* + * Copyright (c) 2019 Lablicate GmbH and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christoph Läubrich - Bug 552223 - [cocoa] NPE in Menu._setVisible when clicking a menuitem of a disposed menu + *******************************************************************************/ +package org.eclipse.swt.tests.cocoa.snippets; + +import java.util.concurrent.TimeUnit; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.MenuEvent; +import org.eclipse.swt.events.MenuListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.MenuItem; +import org.eclipse.swt.widgets.Shell; + +public class Bug_552223_NPE_Menu_setVisible { + + public static void main(String[] args) { + + Display display = new Display(); + Shell shell = new Shell(display); + shell.setText("Bug 552223"); + shell.open(); + Menu menu = new Menu(shell); + MenuItem menuItem = new MenuItem(menu, SWT.NONE); + menuItem.setText("If you click me within three seconds everything will be fine"); + menuItem.addSelectionListener(new SelectionListener() { + + @Override + public void widgetSelected(SelectionEvent e) { + + System.out.println("Item was clicked"); + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + + } + }); + menu.addMenuListener(new MenuListener() { + + @Override + public void menuShown(MenuEvent e) { + + Display.getDefault().timerExec((int)TimeUnit.SECONDS.toMillis(3), () -> { + + menu.dispose(); + System.out.println("The menu is now disposed!"); + }); + } + + @Override + public void menuHidden(MenuEvent e) { + + } + }); + shell.setMenu(menu); + while(!shell.isDisposed()) { + if(!display.readAndDispatch()) { + display.sleep(); + } + } + display.dispose(); + } +}
\ No newline at end of file |