diff --git a/platform/platform-impl/src/com/intellij/ide/lightEdit/LightEditFrameWrapper.kt b/platform/platform-impl/src/com/intellij/ide/lightEdit/LightEditFrameWrapper.kt index c6f7602ce31e..3247e307461b 100644 --- a/platform/platform-impl/src/com/intellij/ide/lightEdit/LightEditFrameWrapper.kt +++ b/platform/platform-impl/src/com/intellij/ide/lightEdit/LightEditFrameWrapper.kt @@ -152,15 +152,17 @@ internal class LightEditFrameWrapper( * This method is not used in a normal conditions. Only for light edit. */ private suspend fun allocateLightEditFrame(project: Project, - projectFrameHelperFactory: (IdeFrameImpl?) -> ProjectFrameHelper): ProjectFrameHelper { + projectFrameHelperFactory: (IdeFrameImpl?) -> LightEditFrameWrapper): ProjectFrameHelper { val windowManager = WindowManager.getInstance() as WindowManagerImpl windowManager.getFrameHelper(project)?.let { return it } windowManager.removeAndGetRootFrame()?.let { frame -> - val frameHelper = projectFrameHelperFactory(frame) - windowManager.lightFrameAssign(project, frameHelper) + val frameHelper = projectFrameHelperFactory(frame).apply { + setupFor(project) + } + windowManager.assignFrame(frameHelper, project, false) return frameHelper } @@ -200,7 +202,9 @@ private suspend fun allocateLightEditFrame(project: Project, } } - windowManager.lightFrameAssign(project, frame) + frame.setupFor(project) + windowManager.assignFrame(frame, project, false) + val uiFrame = frame.frame if (frameInfo != null) { uiFrame.extendedState = frameInfo.extendedState @@ -216,4 +220,12 @@ private suspend fun allocateLightEditFrame(project: Project, ProjectManagerImpl.dispatchEarlyNotifications() } return frame -} \ No newline at end of file +} + +private suspend fun LightEditFrameWrapper.setupFor(project: Project) { + setRawProject(project) + setProject(project) + installDefaultProjectStatusBarWidgets(project) + updateTitle(project) +} + diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/WindowManagerImpl.kt b/platform/platform-impl/src/com/intellij/openapi/wm/impl/WindowManagerImpl.kt index 08827fa49d11..e49e2a8b505c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/WindowManagerImpl.kt +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/WindowManagerImpl.kt @@ -277,23 +277,24 @@ class WindowManagerImpl : WindowManagerEx(), PersistentStateComponentWithModific } suspend fun assignFrame(frameHelper: ProjectFrameHelper, project: Project) { + assignFrame(frameHelper, project, true) + } + + internal suspend fun assignFrame(frameHelper: ProjectFrameHelper, project: Project, withListener: Boolean) { withContext(Dispatchers.EDT) { LOG.assertTrue(!projectToFrame.containsKey(project)) - val listener = FrameStateListener(defaultFrameInfoHelper) - frameHelper.frame.addComponentListener(listener) - projectToFrame.put(project, ProjectItem(frameHelper, listener)) + if (withListener) { + val listener = FrameStateListener(defaultFrameInfoHelper) + frameHelper.frame.addComponentListener(listener) + projectToFrame.put(project, ProjectItem(frameHelper, listener)) + } + else { + projectToFrame.put(project, ProjectItem(frameHelper, null)) + } } } - internal suspend fun lightFrameAssign(project: Project, frameHelper: ProjectFrameHelper) { - projectToFrame.put(project, ProjectItem(frameHelper, null)) - frameHelper.setRawProject(project) - frameHelper.setProject(project) - frameHelper.installDefaultProjectStatusBarWidgets(project) - frameHelper.updateTitle(project) - } - @RequiresEdt override fun releaseFrame(releasedFrameHelper: ProjectFrameHelper) { val project = releasedFrameHelper.project