diff options
author | Matt Biggs | 2015-09-22 09:39:43 +0000 |
---|---|---|
committer | Matt Biggs | 2015-09-22 09:49:17 +0000 |
commit | 47f2f5538654377f31c6d5ace5fb42c19f8f2b42 (patch) | |
tree | c1bf92f66be4a60565653125a95d1885b346955e | |
parent | 01ad74a5a8706697ea0e60d5d7b6befc400e72fa (diff) | |
download | org.eclipse.swtbot-47f2f5538654377f31c6d5ace5fb42c19f8f2b42.tar.gz org.eclipse.swtbot-47f2f5538654377f31c6d5ace5fb42c19f8f2b42.tar.xz org.eclipse.swtbot-47f2f5538654377f31c6d5ace5fb42c19f8f2b42.zip |
Fixes to work around bug 469581. Mars release broke dynamic menu
contributions. These have been fixed however due to timing issues SWTBot
managed to get hold of menu items that are not properly parented within
the e4 model. This change resolves those issues.
Change-Id: I829bfc5e99f7d11ec9e0d3c3827399b6556c473e
Signed-off-by: Matt Biggs <zebbedi@gmail.com>
-rw-r--r-- | org.eclipse.swtbot.e4.finder/src/org/eclipse/swtbot/e4/finder/finders/MenuFinder.java | 10 | ||||
-rw-r--r-- | org.eclipse.swtbot.swt.finder/src/org/eclipse/swtbot/swt/finder/finders/MenuFinder.java | 7 |
2 files changed, 14 insertions, 3 deletions
diff --git a/org.eclipse.swtbot.e4.finder/src/org/eclipse/swtbot/e4/finder/finders/MenuFinder.java b/org.eclipse.swtbot.e4.finder/src/org/eclipse/swtbot/e4/finder/finders/MenuFinder.java index caa1fce0..950d1538 100644 --- a/org.eclipse.swtbot.e4.finder/src/org/eclipse/swtbot/e4/finder/finders/MenuFinder.java +++ b/org.eclipse.swtbot.e4.finder/src/org/eclipse/swtbot/e4/finder/finders/MenuFinder.java @@ -17,6 +17,7 @@ import java.util.List; import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
@@ -145,7 +146,7 @@ public class MenuFinder { private List<MenuItem> findMenusInternal(final Menu bar, final Matcher<MenuItem> matcher, final boolean recursive) {
LinkedHashSet<MenuItem> result = new LinkedHashSet<MenuItem>();
if (bar != null) {
-// bar.notifyListeners(SWT.Show, new Event());
+ bar.notifyListeners(SWT.Show, new Event());
MenuItem[] items = bar.getItems();
for (MenuItem menuItem : items) {
if (isSeparator(menuItem)) {
@@ -156,7 +157,12 @@ public class MenuFinder { if (recursive)
result.addAll(findMenusInternal(menuItem.getMenu(), matcher, recursive));
}
-// bar.notifyListeners(SWT.Hide, new Event());
+ // Do not close menus which contain the item we're looking for - this destroys dynamic menu contributions
+ // giving us the SWT MenuItem but without a E4 model attached (and therefore cannot be used).
+ // @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=469581
+ if (result.isEmpty()) {
+ bar.notifyListeners(SWT.Hide, new Event());
+ }
}
return new ArrayList<MenuItem>(result);
}
diff --git a/org.eclipse.swtbot.swt.finder/src/org/eclipse/swtbot/swt/finder/finders/MenuFinder.java b/org.eclipse.swtbot.swt.finder/src/org/eclipse/swtbot/swt/finder/finders/MenuFinder.java index 56cc622e..57211b00 100644 --- a/org.eclipse.swtbot.swt.finder/src/org/eclipse/swtbot/swt/finder/finders/MenuFinder.java +++ b/org.eclipse.swtbot.swt.finder/src/org/eclipse/swtbot/swt/finder/finders/MenuFinder.java @@ -160,7 +160,12 @@ public class MenuFinder { if (recursive) result.addAll(findMenusInternal(menuItem.getMenu(), matcher, recursive)); } - bar.notifyListeners(SWT.Hide, new Event()); + // Do not close menus which contain the item we're looking for - this destroys dynamic menu contributions + // giving us the SWT MenuItem but without a E4 model attached (and therefore cannot be used). + // @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=469581 + if (result.isEmpty()) { + bar.notifyListeners(SWT.Hide, new Event()); + } } return new ArrayList<MenuItem>(result); } |