Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ContributionsAnalyzer.java7
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/services/EvaluationService.java5
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) {

Back to the top