mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 01:39:21 +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;
|
||||
}
|
||||
|
||||
private void setContextAndEmitEvents() {
|
||||
private void setContext() {
|
||||
myActionContext = new DebuggerModelActionContext(this, tree.getSelectionPath(), tree);
|
||||
contextChanged();
|
||||
}
|
||||
|
||||
private void emitEvents() {
|
||||
DebuggerObjectModel model = myActionContext.getIfDebuggerModel();
|
||||
if (model != null) {
|
||||
modelService.activateModel(model);
|
||||
}
|
||||
contextChanged();
|
||||
}
|
||||
|
||||
private void buildMainPanel() {
|
||||
|
@ -244,14 +247,16 @@ public class DebuggerTargetsProvider extends ComponentProviderAdapter {
|
|||
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
|
||||
mainPanel.add(tree);
|
||||
|
||||
// NB: for both of these, setContext should precede emitEvents
|
||||
tree.getGTSelectionModel().addGTreeSelectionListener(evt -> {
|
||||
if (evt.getEventOrigin() == EventOrigin.API_GENERATED) {
|
||||
return;
|
||||
setContext();
|
||||
if (evt.getEventOrigin() != EventOrigin.API_GENERATED) {
|
||||
emitEvents();
|
||||
}
|
||||
setContextAndEmitEvents();
|
||||
});
|
||||
tree.addGTModelListener((AnyChangeTreeModelListener) e -> {
|
||||
setContextAndEmitEvents();
|
||||
setContext();
|
||||
emitEvents();
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue