public boolean isFocused() { IdeFocusManager fm = IdeFocusManager.getInstance(myProject); Component component = fm.getFocusedDescendantFor(myToolWindow.getComponent()); if (component != null) return true; Component owner = fm.getLastFocusedFor(WindowManager.getInstance().getIdeFrame(myProject)); return owner != null && SwingUtilities.isDescendingFrom(owner, myToolWindow.getComponent()); }
private void disposeFocusTrackbackIfNoChildWindowFocused( @Nullable IdeFocusManager focusManager) { if (myFocusTrackback == null) return; final DialogWrapper wrapper = myDialogWrapper.get(); if (wrapper == null || !wrapper.isShowing()) { myFocusTrackback.dispose(); return; } if (focusManager != null) { final Component c = focusManager.getFocusedDescendantFor(wrapper.getContentPane()); if (c == null) { myFocusTrackback.dispose(); } } else { final Component owner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); if (owner == null || !SwingUtilities.isDescendingFrom(owner, wrapper.getContentPane())) { myFocusTrackback.dispose(); } } }