diff --git a/tools/idea-plugin/CHANGELOG.md b/tools/idea-plugin/CHANGELOG.md index bebd91186..afac1139c 100644 --- a/tools/idea-plugin/CHANGELOG.md +++ b/tools/idea-plugin/CHANGELOG.md @@ -27,6 +27,7 @@ - [Gutter] Fixed rendering of icons with gradients and Compose colors - [Gutter] Fixed rendering of icons with fully qualified imports +- [Gutter] Handle exceptions during icon rendering to prevent IDE crashes on unsupported icons - [IconPack] Fix incorrect initial state of `packageName` field in new pack mode when destination folder is selected - [IconPack] The IDE didn't automatically display the new icon pack object file diff --git a/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/completion/ImageVectorIcon.kt b/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/completion/ImageVectorIcon.kt index f3429df0a..41620098d 100644 --- a/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/completion/ImageVectorIcon.kt +++ b/tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/completion/ImageVectorIcon.kt @@ -68,15 +68,21 @@ class ImageVectorIcon( val maxDimension = ICON_SCALE_FACTOR * size val errorLog = StringBuilder() - val imageBuffer = VdPreview.getPreviewFromVectorXml( - VdPreview.TargetSize.createFromMaxDimension(maxDimension), - vectorXml, - errorLog, - ) + val imageBuffer = try { + VdPreview.getPreviewFromVectorXml( + VdPreview.TargetSize.createFromMaxDimension(maxDimension), + vectorXml, + errorLog, + ) + } catch (e: Exception) { + Logger.getInstance(ImageVectorIcon::class.java) + .warn("Failed to render icon preview: ${e.message}") + return null + } if (errorLog.isNotEmpty()) { Logger.getInstance(ImageVectorIcon::class.java) - .error("Failed to create icon preview: $errorLog") + .warn("Failed to create icon preview: $errorLog") } return imageBuffer