From fe7a20920cf126c08cbec15ae10853c41643b7fc Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Wed, 20 Jul 2022 23:14:35 +0200 Subject: [PATCH] Fix listener being installed multiple times --- .../keeppopupswhiledebugging/PreventHidingPopups.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/chylex/intellij/keeppopupswhiledebugging/PreventHidingPopups.kt b/src/main/java/com/chylex/intellij/keeppopupswhiledebugging/PreventHidingPopups.kt index 52ff89d..442f1e3 100644 --- a/src/main/java/com/chylex/intellij/keeppopupswhiledebugging/PreventHidingPopups.kt +++ b/src/main/java/com/chylex/intellij/keeppopupswhiledebugging/PreventHidingPopups.kt @@ -13,9 +13,16 @@ class PreventHidingPopups : StartupActivity { } companion object { + private var isInstalled = false + fun installListener() { + if (isInstalled) { + return + } + EditorMouseHoverPopupManager.getInstance() // Installs the default listener. EditorMouseHoverPopupControl.getInstance()?.addListener(MouseTrackingDisabledListener) + isInstalled = true } fun tryUninstallListener(): Boolean { @@ -25,6 +32,7 @@ class PreventHidingPopups : StartupActivity { val listenersField = instance.javaClass.getDeclaredField("listeners").also { it.isAccessible = true } val listeners = listenersField.get(instance) as MutableCollection<*> listeners.remove(MouseTrackingDisabledListener) + isInstalled = false true } catch (e: Exception) { false