NationalSecurityAgency / ghidra

Ghidra is a software reverse engineering (SRE) framework
https://www.nsa.gov/ghidra
Apache License 2.0
49.09k stars 5.65k forks source link

Pop-up window not getting focus #6576

Closed mumbel closed 1 month ago

mumbel commented 1 month ago

Describe the bug Double clicking an enum or struct which opens the enum editor or struct editor window (may also be others) from data type manager does not get focus (window is behind code-browser window). If the enum editor or struct editor window is already open it does get focus when double clicking the enum/struct.

Environment (please complete the following information): Ghidra Version: 11.2 (fb844be1f61d71063b1e392f319d352cdd19b962) Ghidra Release: DEV Ghidra Build Date: 2024-May-24 Ghidra Revision: ??? Ghidra Development Mode: true OS Name: Linux OS Arch: amd64 OS Version: 6.5.0-35-generic OS Pretty Name: Ubuntu 22.04.4 LTS Java Vendor: Private Build Java Version: 17.0.10

mumbel commented 1 month ago

Didn't notice these in eclipse console. Also after trying it a few more times, it wasn't consistent with the no window vs window already open

WARN  Shared Key Binding Actions have different default values.  These must be the same.
    Action name: 'Create Pointer'
    Action 1: ghidra.app.plugin.core.datamgr.DataTypesProvider.createLocalActions(DataTypesProvider.java:157)
        Action Trigger: null
    Action 2: ghidra.app.plugin.core.compositeeditor.StructureEditorProvider.createActions(StructureEditorProvider.java:65)
        Action Trigger: pressed P
Using the first value set - null java.lang.Throwable
    at docking.actions.ToolActions.logDifferentKeyBindingsWarnigMessage(ToolActions.java:180)
    at docking.actions.ToolActions.assertSameDefaultActionTrigger(ToolActions.java:154)
    at docking.actions.ToolActions.addActionToMap(ToolActions.java:133)
    at docking.actions.ToolActions.addLocalAction(ToolActions.java:200)
    at docking.AbstractDockingTool.addLocalAction(AbstractDockingTool.java:117)
    at ghidra.app.plugin.core.compositeeditor.CompositeEditorProvider.addActionsToTool(CompositeEditorProvider.java:119)
    at ghidra.app.plugin.core.compositeeditor.StructureEditorProvider.<init>(StructureEditorProvider.java:42)
    at ghidra.app.plugin.core.datamgr.editor.DataTypeEditorManager.edit(DataTypeEditorManager.java:121)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider.editNode(DataTypesProvider.java:649)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider$1.doubleClickTriggered(DataTypesProvider.java:407)
    at docking.event.mouse.GMouseListenerAdapter.doMouseClicked(GMouseListenerAdapter.java:166)
    at docking.event.mouse.GMouseListenerAdapter.mouseClicked(GMouseListenerAdapter.java:133)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider$1.mouseClicked(DataTypesProvider.java:412)
    at docking.widgets.JTreeMouseListenerDelegate.fireMouseClicked(JTreeMouseListenerDelegate.java:131)
    at docking.widgets.JTreeMouseListenerDelegate.mouseClicked(JTreeMouseListenerDelegate.java:109)
  (ToolActions.java:180) 
WARN  Shared Key Binding Actions have different default values.  These must be the same.
    Action name: 'Create Pointer'
    Action 1: ghidra.app.plugin.core.datamgr.DataTypesProvider.createLocalActions(DataTypesProvider.java:157)
        Action Trigger: null
    Action 2: ghidra.app.plugin.core.compositeeditor.StructureEditorProvider.createActions(StructureEditorProvider.java:65)
        Action Trigger: pressed P
Using the first value set - null java.lang.Throwable
    at docking.actions.ToolActions.logDifferentKeyBindingsWarnigMessage(ToolActions.java:180)
    at docking.actions.ToolActions.assertSameDefaultActionTrigger(ToolActions.java:154)
    at docking.actions.ToolActions.addActionToMap(ToolActions.java:133)
    at docking.actions.ToolActions.addLocalAction(ToolActions.java:200)
    at docking.AbstractDockingTool.addLocalAction(AbstractDockingTool.java:117)
    at ghidra.app.plugin.core.compositeeditor.CompositeEditorProvider.addActionsToTool(CompositeEditorProvider.java:119)
    at ghidra.app.plugin.core.compositeeditor.StructureEditorProvider.<init>(StructureEditorProvider.java:42)
    at ghidra.app.plugin.core.datamgr.editor.DataTypeEditorManager.edit(DataTypeEditorManager.java:121)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider.editNode(DataTypesProvider.java:649)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider$1.doubleClickTriggered(DataTypesProvider.java:407)
    at docking.event.mouse.GMouseListenerAdapter.doMouseClicked(GMouseListenerAdapter.java:166)
    at docking.event.mouse.GMouseListenerAdapter.mouseClicked(GMouseListenerAdapter.java:133)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider$1.mouseClicked(DataTypesProvider.java:412)
    at docking.widgets.JTreeMouseListenerDelegate.fireMouseClicked(JTreeMouseListenerDelegate.java:131)
    at docking.widgets.JTreeMouseListenerDelegate.mouseClicked(JTreeMouseListenerDelegate.java:109)
  (ToolActions.java:180) 
WARN  Shared Key Binding Actions have different default values.  These must be the same.
    Action name: 'Create Pointer'
    Action 1: ghidra.app.plugin.core.datamgr.DataTypesProvider.createLocalActions(DataTypesProvider.java:157)
        Action Trigger: null
    Action 2: ghidra.app.plugin.core.compositeeditor.StructureEditorProvider.createActions(StructureEditorProvider.java:65)
        Action Trigger: pressed P
Using the first value set - null java.lang.Throwable
    at docking.actions.ToolActions.logDifferentKeyBindingsWarnigMessage(ToolActions.java:180)
    at docking.actions.ToolActions.assertSameDefaultActionTrigger(ToolActions.java:154)
    at docking.actions.ToolActions.addActionToMap(ToolActions.java:133)
    at docking.actions.ToolActions.addLocalAction(ToolActions.java:200)
    at docking.AbstractDockingTool.addLocalAction(AbstractDockingTool.java:117)
    at ghidra.app.plugin.core.compositeeditor.CompositeEditorProvider.addActionsToTool(CompositeEditorProvider.java:119)
    at ghidra.app.plugin.core.compositeeditor.StructureEditorProvider.<init>(StructureEditorProvider.java:42)
    at ghidra.app.plugin.core.datamgr.editor.DataTypeEditorManager.edit(DataTypeEditorManager.java:121)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider.editNode(DataTypesProvider.java:649)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider$1.doubleClickTriggered(DataTypesProvider.java:407)
    at docking.event.mouse.GMouseListenerAdapter.doMouseClicked(GMouseListenerAdapter.java:166)
    at docking.event.mouse.GMouseListenerAdapter.mouseClicked(GMouseListenerAdapter.java:133)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider$1.mouseClicked(DataTypesProvider.java:412)
    at docking.widgets.JTreeMouseListenerDelegate.fireMouseClicked(JTreeMouseListenerDelegate.java:131)
    at docking.widgets.JTreeMouseListenerDelegate.mouseClicked(JTreeMouseListenerDelegate.java:109)
  (ToolActions.java:180) 
WARN  Shared Key Binding Actions have different default values.  These must be the same.
    Action name: 'Create Pointer'
    Action 1: ghidra.app.plugin.core.datamgr.DataTypesProvider.createLocalActions(DataTypesProvider.java:157)
        Action Trigger: null
    Action 2: ghidra.app.plugin.core.compositeeditor.StructureEditorProvider.createActions(StructureEditorProvider.java:65)
        Action Trigger: pressed P
Using the first value set - null java.lang.Throwable
    at docking.actions.ToolActions.logDifferentKeyBindingsWarnigMessage(ToolActions.java:180)
    at docking.actions.ToolActions.assertSameDefaultActionTrigger(ToolActions.java:154)
    at docking.actions.ToolActions.addActionToMap(ToolActions.java:133)
    at docking.actions.ToolActions.addLocalAction(ToolActions.java:200)
    at docking.AbstractDockingTool.addLocalAction(AbstractDockingTool.java:117)
    at ghidra.app.plugin.core.compositeeditor.CompositeEditorProvider.addActionsToTool(CompositeEditorProvider.java:119)
    at ghidra.app.plugin.core.compositeeditor.StructureEditorProvider.<init>(StructureEditorProvider.java:42)
    at ghidra.app.plugin.core.datamgr.editor.DataTypeEditorManager.edit(DataTypeEditorManager.java:121)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider.editNode(DataTypesProvider.java:649)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider$1.doubleClickTriggered(DataTypesProvider.java:407)
    at docking.event.mouse.GMouseListenerAdapter.doMouseClicked(GMouseListenerAdapter.java:166)
    at docking.event.mouse.GMouseListenerAdapter.mouseClicked(GMouseListenerAdapter.java:133)
    at ghidra.app.plugin.core.datamgr.DataTypesProvider$1.mouseClicked(DataTypesProvider.java:412)
    at docking.widgets.JTreeMouseListenerDelegate.fireMouseClicked(JTreeMouseListenerDelegate.java:131)
    at docking.widgets.JTreeMouseListenerDelegate.mouseClicked(JTreeMouseListenerDelegate.java:109)
  (ToolActions.java:180) 
dragonmacher commented 1 month ago

These messages are likely fallout from the recent action refactoring. I will investigate.

dragonmacher commented 1 month ago

I'm fixing the log messages.

However, I am unable to reproduce the windowing issue.

mumbel commented 1 month ago

yeah, doesn't look like logs are related to the struct in background or foreground after trying it more. Can trigger w/o logs showing (i think maybe its just if the struct has a pointer in it or not to get the log?)

mumbel commented 1 month ago

was able to bisect down to 495dc4df663250d1f3db1d1c7ec7c68b0d2a230c

dragonmacher commented 1 month ago

Thanks for the help! I have a fix in review.

mumbel commented 3 weeks ago

11.2?

dragonmacher commented 3 weeks ago

11.2?

Correct. I will also add this to the patch branch so it will go out in 11.1.1.

mumbel commented 3 weeks ago

Awesome, thanks!

ryanmkurtz commented 3 weeks ago

11.2?

Correct. I will also add this to the patch branch so it will go out in 11.1.1.

0e2d4a182cffa8c142a8fef3afc82181ccff7f11