[wm] remove light-edit-specific method from the window manager

GitOrigin-RevId: f0dc788dfc7adebf9bc5130e2456f22efce1082c
This commit is contained in:
Ivan Semenov
2024-08-15 17:47:43 +00:00
committed by intellij-monorepo-bot
parent 6af53179e9
commit 378186e17f
2 changed files with 29 additions and 16 deletions
@@ -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
}
}
private suspend fun LightEditFrameWrapper.setupFor(project: Project) {
setRawProject(project)
setProject(project)
installDefaultProjectStatusBarWidgets(project)
updateTitle(project)
}
@@ -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