Fixed potential timing-based stack trace

This commit is contained in:
dragonmacher 2021-01-28 09:40:54 -05:00
parent 4066f640cb
commit c8626eec1d

View file

@ -204,13 +204,18 @@ public abstract class ComponentProvider implements HelpDescriptor, ActionContext
// Default implementation // Default implementation
public void requestFocus() { public void requestFocus() {
JComponent component = getComponent();
if (component == null) {
return; // this shouldn't happen; this implies we have been disposed
}
KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager(); KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
Component focusOwner = kfm.getFocusOwner(); Component focusOwner = kfm.getFocusOwner();
if (focusOwner != null && SwingUtilities.isDescendingFrom(focusOwner, getComponent())) { if (focusOwner != null && SwingUtilities.isDescendingFrom(focusOwner, component)) {
return; return;
} }
getComponent().requestFocus(); component.requestFocus();
} }
/** /**