mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
debugger: fix for recursive loop / need for context to be set
This commit is contained in:
parent
2bf42c8e20
commit
5f1876e478
1 changed files with 11 additions and 6 deletions
|
@ -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();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue