Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristoph Läubrich2019-10-18 15:45:07 +0000
committerChristoph Laeubrich2020-03-26 07:00:00 +0000
commit1048abd609e00d1a2c6fec6c200b81ce02c32076 (patch)
tree67fe818a743cfcabd95e733e12a1325337718e5c /tests
parentafd85d5706066f35bd95684bba74bdfbdba9abd8 (diff)
downloadeclipse.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/.classpath1
-rw-r--r--tests/org.eclipse.swt.tests.cocoa/Manual Tests/org/eclipse/swt/tests/cocoa/snippets/Bug_552223_NPE_Menu_setVisible.java77
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

Back to the top