From 0529ff579dccbdc43956bbc82c9c59df66b75c17 Mon Sep 17 00:00:00 2001 From: Denis Fokin Date: Wed, 28 May 2014 21:09:25 +0400 Subject: [PATCH] NPE if a previous focus owner is null. --- .../com/intellij/ui/messages/SheetMessage.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/ui/messages/SheetMessage.java b/platform/platform-impl/src/com/intellij/ui/messages/SheetMessage.java index 8acfaa04edb5..1b3f8f2a50ad 100755 --- a/platform/platform-impl/src/com/intellij/ui/messages/SheetMessage.java +++ b/platform/platform-impl/src/com/intellij/ui/messages/SheetMessage.java @@ -20,6 +20,7 @@ import com.intellij.openapi.application.impl.LaterInvocator; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ex.WindowManagerEx; import com.intellij.ui.Gray; import com.intellij.ui.JBColor; @@ -116,7 +117,19 @@ public class SheetMessage { LaterInvocator.enterModal(myWindow); myWindow.setVisible(true); LaterInvocator.leaveModal(myWindow); - beforeShowFocusOwner.get().requestFocus(); + + Component focusCandidate = beforeShowFocusOwner.get(); + + if (focusCandidate == null) { + focusCandidate = IdeFocusManager.getGlobalInstance().getLastFocusedFor(IdeFocusManager.getGlobalInstance().getLastFocusedFrame()); + } + + LOG.assertTrue(focusCandidate != null, "The should return focus on closing the message"); + + if (focusCandidate != null) { + focusCandidate.requestFocus(); + } + } private void setWindowOpacity(float opacity) {