From 9b18bd6ec4c9744c2f60ec374a248b9f106f7e19 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 17 Jul 2024 11:35:13 +0200 Subject: [PATCH] [platform] making shiny new `IdeTooltipManager` more crash-proof (before the fix it produced ADEs on each mouse move over a startup error dialog) GitOrigin-RevId: 45a221b85d905ce958aceaa8ec119dfe5057bb99 --- .../src/com/intellij/ide/IdeTooltipManager.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.kt b/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.kt index 2cf0079226e0..1bedd33c5944 100644 --- a/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.kt +++ b/platform/platform-impl/src/com/intellij/ide/IdeTooltipManager.kt @@ -12,6 +12,7 @@ import com.intellij.openapi.application.EDT import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.components.serviceAsync +import com.intellij.openapi.components.serviceIfCreated import com.intellij.openapi.diagnostic.logger import com.intellij.openapi.editor.colors.ColorKey import com.intellij.openapi.editor.colors.EditorColorsUtil @@ -65,13 +66,16 @@ private class SwingTooltipManagerCustomizer : ApplicationInitializedListener { asyncScope.launch { withContext(Dispatchers.EDT) { val ideTooltipManager by lazy { - IdeTooltipManager.getInstance() + serviceIfCreated() } - Toolkit.getDefaultToolkit().addAWTEventListener({ - if (isEnabled) { - ideTooltipManager.eventDispatched(it as MouseEvent) - } - }, AWTEvent.MOUSE_EVENT_MASK or AWTEvent.MOUSE_MOTION_EVENT_MASK) + Toolkit.getDefaultToolkit().addAWTEventListener( + { + if (isEnabled) { + ideTooltipManager?.eventDispatched(it as MouseEvent) + } + }, + AWTEvent.MOUSE_EVENT_MASK or AWTEvent.MOUSE_MOTION_EVENT_MASK + ) } } }