Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Schindl2015-11-30 12:33:09 +0000
committerTom Schindl2015-11-30 12:47:56 +0000
commitcb4534bdf199253672f43ac148924b1b49bc896b (patch)
tree0b81a1c418a2fedf3d10db1ed55f7006ea33b702
parent8527b0b609a9e2e3eef16a36c8962785378f1722 (diff)
downloadorg.eclipse.efxclipse-cb4534bdf199253672f43ac148924b1b49bc896b.tar.gz
org.eclipse.efxclipse-cb4534bdf199253672f43ac148924b1b49bc896b.tar.xz
org.eclipse.efxclipse-cb4534bdf199253672f43ac148924b1b49bc896b.zip
Bug 483301 - Event listeners for dynamic menu items are never unregistered
-rwxr-xr-xbundles/runtime/org.eclipse.fx.ui.workbench.renderers.base/src/org/eclipse/fx/ui/workbench/renderers/base/BaseRenderer.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.base/src/org/eclipse/fx/ui/workbench/renderers/base/BaseRenderer.java b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.base/src/org/eclipse/fx/ui/workbench/renderers/base/BaseRenderer.java
index a5c2b6c6c..5fabad3ad 100755
--- a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.base/src/org/eclipse/fx/ui/workbench/renderers/base/BaseRenderer.java
+++ b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.base/src/org/eclipse/fx/ui/workbench/renderers/base/BaseRenderer.java
@@ -19,6 +19,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
+import java.util.Set;
import javax.inject.Inject;
@@ -187,12 +188,6 @@ public abstract class BaseRenderer<M extends MUIElement, W extends WWidget<M>> i
// Bug 433845
widget.setPropertyChangeHandler((WPropertyChangeEvent<W> e) -> propertyObjectChanged(element, e));
initWidget(element, widget);
- IEventBroker broker = this._context.get(IEventBroker.class);
- if (broker != null) {
- initDefaultEventListeners(broker);
- } else {
- this.logger.error("No event broker was found. Most things will not operate appropiately!"); //$NON-NLS-1$
- }
element.getTransientData().put(CALCULATED_VISIBILITY, Boolean.valueOf(element.isVisible() && checkVisibleWhen(element, getModelContext(element))));
@@ -268,6 +263,17 @@ public abstract class BaseRenderer<M extends MUIElement, W extends WWidget<M>> i
}
}
+ @Inject
+ public void _setRendererContext(IEclipseContext _context) {
+ IEventBroker broker = this._context.get(IEventBroker.class);
+ if (broker != null) {
+ //FIXME We need to redesign the translation of events into IEclipseContext values
+ initDefaultEventListeners(broker);
+ } else {
+ this.logger.error("No event broker was found. Most things will not operate appropiately!"); //$NON-NLS-1$
+ }
+ }
+
@SuppressWarnings("null")
private void initDefaultEventListeners(@NonNull IEventBroker broker) {
registerEventListener(broker, UIEvents.ApplicationElement.TOPIC_PERSISTEDSTATE);
@@ -389,6 +395,7 @@ public abstract class BaseRenderer<M extends MUIElement, W extends WWidget<M>> i
* @param topic
* the topic
*/
+ //FIXME We need to redesign the translation of events into IEclipseContext values
protected void registerEventListener(@NonNull IEventBroker broker, @NonNull String topic) {
broker.subscribe(topic, this::handleEvent);
}

Back to the top