work with stable focus state when restarting from deeply nested plugin update dialog (IDEA-172247)

This commit is contained in:
peter
2017-05-02 20:30:59 +02:00
parent bf045ba463
commit 78edeb5bb0
@@ -18,7 +18,7 @@ package com.intellij.ide.plugins;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.application.TransactionGuard;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.options.newEditor.SettingsDialog;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.GraphicsConfig;
@@ -292,13 +292,13 @@ public class PluginHeaderPanel {
if (dialog != null && dialog.isModal()) {
dialog.close(DialogWrapper.OK_EXIT_CODE);
}
TransactionGuard.getInstance().submitTransactionLater(ApplicationManager.getApplication(), () -> {
IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown(() -> {
DialogWrapper settings = DialogWrapper.findInstance(IdeFocusManager.findInstance().getFocusOwner());
if (settings instanceof SettingsDialog) {
((SettingsDialog)settings).doOKAction();
}
ApplicationManager.getApplication().restart();
});
}, ModalityState.current());
break;
}
setPlugin(myPlugin);