eteran / edb-debugger

edb is a cross-platform AArch32/x86/x86-64 debugger.
GNU General Public License v2.0
2.7k stars 326 forks source link

Several Plugin Windows cannot be switched between using keyboard shortcuts #677

Open AaronOpfer opened 6 years ago

AaronOpfer commented 6 years ago

No idea if this is DE-specific, but I found this on GNOME3.

If the user cannot use the mouse (such as the paused debuggee has captured it), and the main edb window has focus, it becomes impossible to restore focus to a plugin's window using only the keyboard. The plugin window doesn't appear as an option on the alt tab menu like windows usually do. I reproduced this with the breakpoint manager and the binary info plugins.

Steps to repro:

  1. Open a plugin window, such as the breakpoints manager (Control+B)
  2. Using alt tab, switch focus away from edb, and then back again.
  3. Observe that the main edb window has focus. Observe the breakpoint window, which is probably in the way of the main edb window and what you're trying to look at, cannot be alt-tabbed to in any way using the keyboard, and cannot be closed.
--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/64023952-several-plugin-windows-cannot-be-switched-between-using-keyboard-shortcuts?utm_campaign=plugin&utm_content=tracker%2F14326212&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F14326212&utm_medium=issues&utm_source=github).
eteran commented 6 years ago

Hmm, that's a weird one. I'll look into it.

AaronOpfer commented 6 years ago

Cool. It would also be nice if there was a feature of edb to force the mouse to be ungrabbed on a breakpoint hit in case the debuggee captured it.

10110111 commented 6 years ago

It would also be nice if there was a feature of edb to force the mouse to be ungrabbed on a breakpoint hit in case the debuggee captured it.

I'm afraid it's not possible without breaking debuggee's connection to the X server. Ah, although EDB might be able to simply call XUngrabPointer on behalf of the debuggee, but that's not really simple, and may considerably change debuggee's state.