runExternalCode(Runnable runnable)
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/SelectionAggregator.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/SelectionAggregator.java
index 08df85a..820ab1f 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/SelectionAggregator.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/SelectionAggregator.java
@@ -158,13 +158,17 @@
if (activePart == part) {
myContext.set(IServiceConstants.ACTIVE_SELECTION, selection);
- pauseRecording();
- notifyListeners(part, selection);
- resumeRecoding();
+ runExternalCode(new Runnable() {
+ public void run() {
+ notifyListeners(part, selection);
+ }
+ });
} else {
- pauseRecording();
- notifyTargetedListeners(part, selection);
- resumeRecoding();
+ runExternalCode(new Runnable() {
+ public void run() {
+ notifyTargetedListeners(part, selection);
+ }
+ });
// we don't need to keep tracking non-active parts unless
// they have targeted listeners
String partId = part.getElementId();