IDEA-338096 memory leak fix

GitOrigin-RevId: 26a9a000fb1304fd103a0a8b415f77233393c5b3
This commit is contained in:
anna.gromova
2024-01-31 18:45:40 +01:00
committed by intellij-monorepo-bot
parent d78636fb89
commit 99fd3449ba

View File

@@ -6,7 +6,7 @@ import com.intellij.openapi.util.NlsContexts
class OnboardingController private constructor(){ class OnboardingController private constructor(){
companion object { companion object {
val controller = OnboardingController() private val controller = OnboardingController()
fun getInstance(): OnboardingController = controller fun getInstance(): OnboardingController = controller
} }
@@ -18,7 +18,7 @@ class OnboardingController private constructor(){
CLOSED CLOSED
} }
private var dialog = createDialog() private var dialog: OnboardingDialog? = null
private fun createDialog(): OnboardingDialog { private fun createDialog(): OnboardingDialog {
return OnboardingDialog { doCancelAction() }.apply { return OnboardingDialog { doCancelAction() }.apply {
@@ -38,9 +38,7 @@ class OnboardingController private constructor(){
isModal: Boolean = true, isModal: Boolean = true,
skipImportAction: (() -> Unit)? = null) { skipImportAction: (() -> Unit)? = null) {
if(!dialog.isShowing || !dialog.isVisible) { val dl = getDialog()
dialog = createDialog()
}
val skipAction: () -> Unit = skipImportAction ?: val skipAction: () -> Unit = skipImportAction ?:
WizardProvider.getInstance().getWizardService()?.let { WizardProvider.getInstance().getWizardService()?.let {
@@ -49,48 +47,57 @@ class OnboardingController private constructor(){
{ dialogClose() } { dialogClose() }
} }
val controller = ImportSettingsController.createController(dialog, skipAction) val controller = ImportSettingsController.createController(dl, skipAction)
cancelImportCallback = cancelCallback cancelImportCallback = cancelCallback
controller.goToProductChooserPage() controller.goToProductChooserPage()
dialog.isModal = isModal dl.isModal = isModal
if(!dialog.isShowing) { if(!dl.isShowing) {
dialog.initialize() dl.initialize()
dialog.show() dl.show()
} }
dialog.title = title dl.title = title
state = State.IMPORT state = State.IMPORT
} }
fun dialogClose() { fun dialogClose() {
dialog.dialogClose() dialog?.dialogClose()
} }
private fun getDialog(): OnboardingDialog {
val dl = dialog?.let {
if(!it.isShowing || !it.isVisible) {
createDialog()
} else it
} ?: run {
createDialog()
}
dialog = dl
return dl
}
fun startWizard(cancelCallback: (() -> Unit)? = null, fun startWizard(cancelCallback: (() -> Unit)? = null,
@NlsContexts.DialogTitle title: String? = null, @NlsContexts.DialogTitle title: String? = null,
isModal: Boolean = true, isModal: Boolean = true,
goBackAction: (() -> Unit)? = {startImport (cancelCallback, title, isModal)}) { goBackAction: (() -> Unit)? = {startImport (cancelCallback, title, isModal)}) {
if(!dialog.isShowing || !dialog.isVisible) { val dl = getDialog()
dialog = createDialog()
}
val service = WizardProvider.getInstance().getWizardService() ?: return val service = WizardProvider.getInstance().getWizardService() ?: return
val wizardController = WizardController.createController(dialog, service, goBackAction) val wizardController = WizardController.createController(dl, service, goBackAction)
cancelImportCallback = cancelCallback cancelImportCallback = cancelCallback
wizardController.goToThemePage() wizardController.goToThemePage()
if(!dialog.isShowing) { if(!dl.isShowing) {
dialog.initialize() dl.initialize()
dialog.show() dl.show()
} }
dialog.title = title dl.title = title
state = State.WIZARD state = State.WIZARD
} }