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