From 97bc33a07fd42beb1a92a8154075c192bd04b150 Mon Sep 17 00:00:00 2001 From: Jacob Logsdon Date: Mon, 6 Oct 2025 16:48:38 -0700 Subject: [PATCH] Use available MD provider when preferred isn't available Since we do not have JCEF bundled in Android Studio's JBR we run into an issue where the first time a markdown panel is attempted to be created it will instead be an empty panel. It works for subsequent calls as the setting gets persisted. While JCEFHtmlPanelProvider returns false for canBeUsed in Studio, this method isn't called until it is already attempted to be created. It's known that the ComposePanelProvider is not fully stable, but it is a better alternative than no render support in Android Studio. Test: manual Fixes: 447223197 Change-Id: If05c692338a8d3bcadd5dd5235ae4b1e7707b467 closes https://github.com/JetBrains/intellij-community/pull/3266 GitOrigin-RevId: eafa9be776aff739b544c4d3c3eb3b78a5a5bb4e --- .../plugins/markdown/ui/preview/MarkdownPreviewFileEditor.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/MarkdownPreviewFileEditor.kt b/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/MarkdownPreviewFileEditor.kt index 9eb76d6f76af..7da1b7fc7b60 100644 --- a/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/MarkdownPreviewFileEditor.kt +++ b/plugins/markdown/core/src/org/intellij/plugins/markdown/ui/preview/MarkdownPreviewFileEditor.kt @@ -186,7 +186,7 @@ class MarkdownPreviewFileEditor( private fun retrievePanelProvider(settings: MarkdownSettings): MarkdownHtmlPanelProvider { val providerInfo = settings.previewPanelProviderInfo - val preferredProvider = MarkdownHtmlPanelProvider.createFromInfo(providerInfo) + var preferredProvider = MarkdownHtmlPanelProvider.createFromInfo(providerInfo) if (preferredProvider.isAvailable() !== MarkdownHtmlPanelProvider.AvailabilityInfo.AVAILABLE) { val registeredProviders = MarkdownHtmlPanelProvider.getProviders() val availableProvider = registeredProviders.firstOrNull { p: MarkdownHtmlPanelProvider -> p.isAvailable() === MarkdownHtmlPanelProvider.AvailabilityInfo.AVAILABLE } @@ -205,6 +205,7 @@ class MarkdownPreviewFileEditor( project ) logger.warn("Cannot use preview panel provider '${providerInfo.name}'. Using the first one that is available: ${preferredProvider.providerInfo.name}") + preferredProvider = availableProvider } } lastPanelProviderInfo = settings.previewPanelProviderInfo