mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[ui] IJPL-234915: Bind widget scope to its plugin
GitOrigin-RevId: e183c49804d779911c847b9d0f23e92710443687
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ab415d506e
commit
f08e0b7915
+13
@@ -6,6 +6,7 @@ package com.intellij.openapi.wm.impl.status.widget
|
||||
import com.intellij.diagnostic.PluginException
|
||||
import com.intellij.ide.lightEdit.LightEdit
|
||||
import com.intellij.ide.lightEdit.LightEditCompatible
|
||||
import com.intellij.ide.plugins.cl.PluginAwareClassLoader
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.EDT
|
||||
@@ -31,7 +32,10 @@ import com.intellij.openapi.wm.WindowManager
|
||||
import com.intellij.openapi.wm.impl.status.ChildStatusBarWidget
|
||||
import com.intellij.openapi.wm.impl.status.IdeStatusBarImpl
|
||||
import com.intellij.openapi.wm.impl.status.createComponentByWidgetPresentation
|
||||
import com.intellij.platform.util.coroutines.attachAsChildTo
|
||||
import com.intellij.platform.util.coroutines.childScope
|
||||
import com.intellij.util.application
|
||||
import com.intellij.util.asSafely
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.cancel
|
||||
@@ -266,9 +270,18 @@ private fun createWidget(
|
||||
}
|
||||
|
||||
val widgetScope = parentScope.childScope("${factory.id}-widget")
|
||||
tryAttachWidgetScopeToPlugin(factory, widgetScope)
|
||||
|
||||
return WidgetPresentationWrapper(id = factory.id, factory = factory, dataContext = dataContext, scope = widgetScope)
|
||||
}
|
||||
|
||||
private fun tryAttachWidgetScopeToPlugin(factory: StatusBarWidgetFactory, widgetScope: CoroutineScope) {
|
||||
val pluginScope = factory.javaClass.classLoader.asSafely<PluginAwareClassLoader>()?.pluginCoroutineScope
|
||||
if (pluginScope != null) {
|
||||
widgetScope.attachAsChildTo(pluginScope)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for V2 status bar widgets (those using WidgetPresentationFactory).
|
||||
* Implements ChildStatusBarWidget to support child status bars in detached windows.
|
||||
|
||||
Reference in New Issue
Block a user