mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[terminal] IJPL-212254 Use TerminaltabsStorage directly during tabs restor
It is a breaking change now because it is a part of larger refactoring. (cherry picked from commit 5f1cf3409a16f815d4de21d1dd2adb46b0b195dd) IJ-CR-214214 GitOrigin-RevId: 2ab4081c0419bd55f8f6384e3f26323c179ef402
This commit is contained in:
committed by
intellij-monorepo-bot
parent
74539bdc48
commit
458fed1952
-6
@@ -46,12 +46,6 @@ internal class TerminalTabsManager(private val project: Project, private val cor
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun getTerminalTabs(): List<TerminalSessionTab> {
|
||||
return tabsLock.withLock {
|
||||
getTerminalTabsNoLock()
|
||||
}
|
||||
}
|
||||
|
||||
/** Caller must hold [tabsLock] */
|
||||
private fun getTerminalTabsNoLock(): List<TerminalSessionTab> {
|
||||
return tabsMap.values.toList()
|
||||
|
||||
+4
-14
@@ -20,7 +20,6 @@ import com.intellij.platform.util.coroutines.childScope
|
||||
import com.intellij.terminal.frontend.action.TerminalAgentsAvailabilityService
|
||||
import com.intellij.terminal.frontend.action.TerminalRenameTabAction
|
||||
import com.intellij.terminal.frontend.fus.TerminalFocusFusService
|
||||
import com.intellij.terminal.frontend.session.TerminalTabsManager
|
||||
import com.intellij.terminal.frontend.toolwindow.TerminalTabsManagerListener
|
||||
import com.intellij.terminal.frontend.toolwindow.TerminalToolWindowTab
|
||||
import com.intellij.terminal.frontend.toolwindow.TerminalToolWindowTabBuilder
|
||||
@@ -48,10 +47,11 @@ import org.jetbrains.plugins.terminal.TerminalTabCloseListener
|
||||
import org.jetbrains.plugins.terminal.TerminalToolWindowFactory
|
||||
import org.jetbrains.plugins.terminal.TerminalToolWindowInitializer
|
||||
import org.jetbrains.plugins.terminal.TerminalToolWindowPanel
|
||||
import org.jetbrains.plugins.terminal.block.reworked.session.TerminalSessionTab
|
||||
import org.jetbrains.plugins.terminal.fus.ReworkedTerminalUsageCollector
|
||||
import org.jetbrains.plugins.terminal.fus.TerminalStartupFusInfo
|
||||
import org.jetbrains.plugins.terminal.fus.TerminalTabOpeningWay
|
||||
import org.jetbrains.plugins.terminal.settings.impl.TerminalSessionPersistedTab
|
||||
import org.jetbrains.plugins.terminal.settings.impl.TerminalTabsStorage
|
||||
import org.jetbrains.plugins.terminal.startup.TerminalProcessType
|
||||
import org.jetbrains.plugins.terminal.util.TerminalTitleUtils.createDefaultTabName
|
||||
import java.lang.ref.WeakReference
|
||||
@@ -260,7 +260,6 @@ internal class TerminalToolWindowTabsManagerImpl(
|
||||
val terminal = createTerminalView(
|
||||
project = project,
|
||||
options = viewOptions,
|
||||
existingBackendTabId = builder.backendTabId,
|
||||
coroutineScope = coroutineScope.childScope("TerminalView")
|
||||
)
|
||||
terminal.title.change {
|
||||
@@ -316,7 +315,7 @@ internal class TerminalToolWindowTabsManagerImpl(
|
||||
private fun scheduleTabsRestoring(manager: TerminalToolWindowTabsManagerImpl) {
|
||||
if (TrustedProjects.isProjectTrusted(manager.project)) {
|
||||
manager.tabsRestoredDeferred = manager.coroutineScope.async {
|
||||
val tabs: List<TerminalSessionTab> = TerminalTabsManager.getInstance(manager.project).getTerminalTabs()
|
||||
val tabs: List<TerminalSessionPersistedTab> = TerminalTabsStorage.getInstance(manager.project).getStoredTabs()
|
||||
withContext(Dispatchers.EDT + ModalityState.any().asContextElement()) {
|
||||
restoreTabs(tabs, manager)
|
||||
}
|
||||
@@ -324,7 +323,7 @@ internal class TerminalToolWindowTabsManagerImpl(
|
||||
}
|
||||
}
|
||||
|
||||
private fun restoreTabs(tabs: List<TerminalSessionTab>, manager: TerminalToolWindowTabsManagerImpl) {
|
||||
private fun restoreTabs(tabs: List<TerminalSessionPersistedTab>, manager: TerminalToolWindowTabsManagerImpl) {
|
||||
for (tab in tabs) {
|
||||
val builder = manager.createTabBuilder() as TerminalToolWindowTabBuilderImpl
|
||||
with(builder) {
|
||||
@@ -334,7 +333,6 @@ internal class TerminalToolWindowTabsManagerImpl(
|
||||
processType(tab.processType ?: TerminalProcessType.SHELL)
|
||||
tabName(tab.name)
|
||||
userDefinedName(tab.isUserDefinedName)
|
||||
backendTabId(tab.id)
|
||||
requestFocus(false) // Otherwise it may trigger the tool window showing
|
||||
// Pass null as a trigger time because we don't need to track latency in this case.
|
||||
startupFusInfo(TerminalStartupFusInfo(TerminalTabOpeningWay.TABS_RESTORE, triggerTime = null))
|
||||
@@ -380,9 +378,6 @@ internal class TerminalToolWindowTabsManagerImpl(
|
||||
var startupFusInfo: TerminalStartupFusInfo? = null
|
||||
private set
|
||||
|
||||
var backendTabId: Int? = null
|
||||
private set
|
||||
|
||||
override fun workingDirectory(directory: String?): TerminalToolWindowTabBuilder {
|
||||
workingDirectory = directory
|
||||
return this
|
||||
@@ -448,11 +443,6 @@ internal class TerminalToolWindowTabsManagerImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
fun backendTabId(id: Int?): TerminalToolWindowTabBuilder {
|
||||
backendTabId = id
|
||||
return this
|
||||
}
|
||||
|
||||
override fun createTab(): TerminalToolWindowTab {
|
||||
return createTab(this)
|
||||
}
|
||||
|
||||
+2
-4
@@ -37,7 +37,6 @@ import org.jetbrains.plugins.terminal.block.ui.TerminalUiUtils
|
||||
internal fun createTerminalView(
|
||||
project: Project,
|
||||
options: TerminalViewBuilderOptions,
|
||||
existingBackendTabId: Int?,
|
||||
coroutineScope: CoroutineScope,
|
||||
): TerminalView {
|
||||
val terminalView = TerminalViewImpl(
|
||||
@@ -47,7 +46,7 @@ internal fun createTerminalView(
|
||||
coroutineScope = coroutineScope,
|
||||
sourceNavigationProjectPath = options.sourceNavigationProjectPath,
|
||||
)
|
||||
createBackendTabAndStartSession(project, terminalView, options, existingBackendTabId)
|
||||
createBackendTabAndStartSession(project, terminalView, options)
|
||||
return terminalView
|
||||
}
|
||||
|
||||
@@ -56,9 +55,8 @@ private fun createBackendTabAndStartSession(
|
||||
project: Project,
|
||||
terminal: TerminalViewImpl,
|
||||
options: TerminalViewBuilderOptions,
|
||||
existingBackendTabId: Int?,
|
||||
) = terminal.coroutineScope.launch {
|
||||
val backendTabId = existingBackendTabId ?: TerminalTabsManager.getInstance(project).createNewTerminalTab().id
|
||||
val backendTabId = TerminalTabsManager.getInstance(project).createNewTerminalTab().id
|
||||
|
||||
terminal.coroutineScope.awaitCancellationAndInvoke(Dispatchers.EDT) {
|
||||
TerminalTabsManager.getInstance(project).closeTerminalTab(backendTabId)
|
||||
|
||||
Reference in New Issue
Block a user