diff options
2 files changed, 12 insertions, 0 deletions
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java index b1a86dbe933..9d3291eae24 100644 --- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java +++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java @@ -238,6 +238,13 @@ public final class ContributionsAnalyzer { exp.setCoreExpression(ref); } try { + // Creates dependency on a predefined value that can be "poked" by the evaluation + // service + ExpressionInfo info = ref.computeExpressionInfo(); + String[] names = info.getAccessedPropertyNames(); + for (String name : names) { + eContext.getVariable(name + ".evaluationServiceLink"); //$NON-NLS-1$ + } return ref.evaluate(eContext) != EvaluationResult.FALSE; } catch (CoreException e) { trace("isVisible exception", e); //$NON-NLS-1$ diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java index e3d818b1dcd..eb13a1ce97d 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java @@ -285,6 +285,11 @@ public final class EvaluationService implements IEvaluationService { * @see org.eclipse.ui.services.IEvaluationService#requestEvaluation(java.lang.String) */ public void requestEvaluation(String propertyName) { + // Trigger evaluation of properties via context + String pokeVar = propertyName + ".evaluationServiceLink"; //$NON-NLS-1$ + context.remove(pokeVar); + context.set(pokeVar, "link"); //$NON-NLS-1$ + String[] sourceNames = new String[] { propertyName }; startSourceChange(sourceNames); for (EvaluationReference ref : refs) { |