debugger: fix for recursive loop / need for context to be set

This commit is contained in:
d-millar 2021-04-01 13:25:53 -04:00
parent 2bf42c8e20
commit 5f1876e478

View file

@ -226,13 +226,16 @@ public class DebuggerTargetsProvider extends ComponentProviderAdapter {
return mainPanel; return mainPanel;
} }
private void setContextAndEmitEvents() { private void setContext() {
myActionContext = new DebuggerModelActionContext(this, tree.getSelectionPath(), tree); myActionContext = new DebuggerModelActionContext(this, tree.getSelectionPath(), tree);
contextChanged();
}
private void emitEvents() {
DebuggerObjectModel model = myActionContext.getIfDebuggerModel(); DebuggerObjectModel model = myActionContext.getIfDebuggerModel();
if (model != null) { if (model != null) {
modelService.activateModel(model); modelService.activateModel(model);
} }
contextChanged();
} }
private void buildMainPanel() { private void buildMainPanel() {
@ -244,14 +247,16 @@ public class DebuggerTargetsProvider extends ComponentProviderAdapter {
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
mainPanel.add(tree); mainPanel.add(tree);
// NB: for both of these, setContext should precede emitEvents
tree.getGTSelectionModel().addGTreeSelectionListener(evt -> { tree.getGTSelectionModel().addGTreeSelectionListener(evt -> {
if (evt.getEventOrigin() == EventOrigin.API_GENERATED) { setContext();
return; if (evt.getEventOrigin() != EventOrigin.API_GENERATED) {
emitEvents();
} }
setContextAndEmitEvents();
}); });
tree.addGTModelListener((AnyChangeTreeModelListener) e -> { tree.addGTModelListener((AnyChangeTreeModelListener) e -> {
setContextAndEmitEvents(); setContext();
emitEvents();
}); });
} }