mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
[debugger] IDEA-368342 Do not capture DataContext
(cherry picked from commit bec58971bae5989b5fe0cdaeb2cab3072f42f5b8) IJ-CR-156425 GitOrigin-RevId: d5f1f05ebbe0db9bc69ef279e29f8da345d16040
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6536ad2aff
commit
c3a1b692ea
@@ -199,25 +199,25 @@ internal class HotSwapFloatingToolbarProvider : FloatingToolbarProvider {
|
|||||||
|
|
||||||
override fun register(dataContext: DataContext, component: FloatingToolbarComponent, parentDisposable: Disposable) {
|
override fun register(dataContext: DataContext, component: FloatingToolbarComponent, parentDisposable: Disposable) {
|
||||||
val project = dataContext.getData(CommonDataKeys.PROJECT) ?: return
|
val project = dataContext.getData(CommonDataKeys.PROJECT) ?: return
|
||||||
|
val editorTag = dataContext.editorTag
|
||||||
if (component is JComponent) {
|
if (component is JComponent) {
|
||||||
component.installPopupMenu()
|
component.installPopupMenu()
|
||||||
}
|
}
|
||||||
val manager = FrontendHotSwapManager.getInstance(project)
|
val manager = FrontendHotSwapManager.getInstance(project)
|
||||||
val job = manager.coroutineScope.launch {
|
val job = manager.coroutineScope.launch {
|
||||||
manager.currentStatusFlow.collectLatest { status ->
|
manager.currentStatusFlow.collectLatest { status ->
|
||||||
onStatusChanged(component, status?.status, dataContext)
|
onStatusChanged(component, status?.status, editorTag)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Disposer.register(parentDisposable, Disposable {
|
Disposer.register(parentDisposable, Disposable {
|
||||||
if (logger.isDebugEnabled) {
|
if (logger.isDebugEnabled) {
|
||||||
val editor = dataContext.getData(CommonDataKeys.EDITOR)
|
logger.debug("Floating toolbar disposed ($editorTag)")
|
||||||
logger.debug("Floating toolbar disposed ($editor)")
|
|
||||||
}
|
}
|
||||||
job.cancel("disposed")
|
job.cancel("disposed")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun onStatusChanged(component: FloatingToolbarComponent, status: HotSwapVisibleStatus?, dataContext: DataContext) =
|
private suspend fun onStatusChanged(component: FloatingToolbarComponent, status: HotSwapVisibleStatus?, editorTag: String?) =
|
||||||
withContext(Dispatchers.EDT) {
|
withContext(Dispatchers.EDT) {
|
||||||
fun updateActions() {
|
fun updateActions() {
|
||||||
if (component is ActionToolbarImpl) {
|
if (component is ActionToolbarImpl) {
|
||||||
@@ -227,16 +227,14 @@ internal class HotSwapFloatingToolbarProvider : FloatingToolbarProvider {
|
|||||||
|
|
||||||
if (!showFloatingToolbar()) {
|
if (!showFloatingToolbar()) {
|
||||||
if (logger.isDebugEnabled) {
|
if (logger.isDebugEnabled) {
|
||||||
val editor = dataContext.getData(CommonDataKeys.EDITOR)
|
logger.debug("Hide button because it is disabled ($editorTag)")
|
||||||
logger.debug("Hide button because it is disabled ($editor)")
|
|
||||||
}
|
}
|
||||||
component.scheduleHide()
|
component.scheduleHide()
|
||||||
return@withContext
|
return@withContext
|
||||||
}
|
}
|
||||||
|
|
||||||
if (logger.isDebugEnabled) {
|
if (logger.isDebugEnabled) {
|
||||||
val editor = dataContext.getData(CommonDataKeys.EDITOR)
|
logger.debug("Button status changed: $status ($editorTag)")
|
||||||
logger.debug("Button status changed: $status ($editor)")
|
|
||||||
}
|
}
|
||||||
when (status) {
|
when (status) {
|
||||||
HotSwapVisibleStatus.IN_PROGRESS -> {
|
HotSwapVisibleStatus.IN_PROGRESS -> {
|
||||||
@@ -265,7 +263,7 @@ internal class HotSwapFloatingToolbarProvider : FloatingToolbarProvider {
|
|||||||
override fun onHiddenByEsc(dataContext: DataContext) {
|
override fun onHiddenByEsc(dataContext: DataContext) {
|
||||||
val project = dataContext.getData(CommonDataKeys.PROJECT) ?: return
|
val project = dataContext.getData(CommonDataKeys.PROJECT) ?: return
|
||||||
if (logger.isDebugEnabled) {
|
if (logger.isDebugEnabled) {
|
||||||
logger.debug("Button is hidden by Esc button: ${dataContext.getData(CommonDataKeys.EDITOR)}")
|
logger.debug("Button is hidden by Esc button: ${dataContext.editorTag}")
|
||||||
}
|
}
|
||||||
FrontendHotSwapManager.getInstance(project).notifyHidden()
|
FrontendHotSwapManager.getInstance(project).notifyHidden()
|
||||||
}
|
}
|
||||||
@@ -280,7 +278,7 @@ private class HideAction : AnAction() {
|
|||||||
override fun actionPerformed(e: AnActionEvent) {
|
override fun actionPerformed(e: AnActionEvent) {
|
||||||
val project = e.project ?: return
|
val project = e.project ?: return
|
||||||
if (logger.isDebugEnabled) {
|
if (logger.isDebugEnabled) {
|
||||||
logger.debug("Button is hidden by user: ${e.dataContext.getData(CommonDataKeys.EDITOR)}")
|
logger.debug("Button is hidden by user: ${e.dataContext.editorTag}")
|
||||||
}
|
}
|
||||||
FrontendHotSwapManager.getInstance(project).notifyHidden()
|
FrontendHotSwapManager.getInstance(project).notifyHidden()
|
||||||
}
|
}
|
||||||
@@ -293,4 +291,6 @@ private class HideAction : AnAction() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val DataContext.editorTag: String? get() = getData(PlatformCoreDataKeys.FILE_EDITOR)?.file?.path
|
||||||
|
|
||||||
private val XDebugHotSwapCurrentSessionStatus.hasChanges get() = status == HotSwapVisibleStatus.CHANGES_READY
|
private val XDebugHotSwapCurrentSessionStatus.hasChanges get() = status == HotSwapVisibleStatus.CHANGES_READY
|
||||||
|
|||||||
Reference in New Issue
Block a user