1
0

Fix listener being installed multiple times

This commit is contained in:
chylex 2022-07-20 23:14:35 +02:00
parent b9a8bdaeba
commit fe7a20920c
Signed by: chylex
GPG Key ID: 4DE42C8F19A80548

View File

@ -13,9 +13,16 @@ class PreventHidingPopups : StartupActivity {
} }
companion object { companion object {
private var isInstalled = false
fun installListener() { fun installListener() {
if (isInstalled) {
return
}
EditorMouseHoverPopupManager.getInstance() // Installs the default listener. EditorMouseHoverPopupManager.getInstance() // Installs the default listener.
EditorMouseHoverPopupControl.getInstance()?.addListener(MouseTrackingDisabledListener) EditorMouseHoverPopupControl.getInstance()?.addListener(MouseTrackingDisabledListener)
isInstalled = true
} }
fun tryUninstallListener(): Boolean { fun tryUninstallListener(): Boolean {
@ -25,6 +32,7 @@ class PreventHidingPopups : StartupActivity {
val listenersField = instance.javaClass.getDeclaredField("listeners").also { it.isAccessible = true } val listenersField = instance.javaClass.getDeclaredField("listeners").also { it.isAccessible = true }
val listeners = listenersField.get(instance) as MutableCollection<*> val listeners = listenersField.get(instance) as MutableCollection<*>
listeners.remove(MouseTrackingDisabledListener) listeners.remove(MouseTrackingDisabledListener)
isInstalled = false
true true
} catch (e: Exception) { } catch (e: Exception) {
false false