diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XValueHint.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XValueHint.java index 589c8aed2abf..34993dbbc385 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XValueHint.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XValueHint.java @@ -28,7 +28,6 @@ import com.intellij.openapi.actionSystem.ShortcutSet; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.editor.impl.EditorImpl; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.openapi.project.DumbAwareAction; @@ -116,7 +115,6 @@ public class XValueHint extends AbstractValueHint { boolean result = super.showHint(component); if (result && getType() == ValueHintType.MOUSE_OVER_HINT) { myDisposable = Disposer.newDisposable(); - Disposer.register(((EditorImpl)getEditor()).getDisposable(), myDisposable); ShortcutSet shortcut = ActionManager.getInstance().getAction("ShowErrorDescription").getShortcutSet(); new DumbAwareAction() { @Override @@ -130,6 +128,15 @@ public class XValueHint extends AbstractValueHint { return result; } + @Override + protected void onHintHidden() { + super.onHintHidden(); + if (myDisposable != null) { + Disposer.dispose(myDisposable); + myDisposable = null; + } + } + @Override public void hideHint() { super.hideHint(); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/common/AbstractValueHint.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/common/AbstractValueHint.java index cdfd2edee439..b5991f77b1bc 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/common/AbstractValueHint.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/common/AbstractValueHint.java @@ -194,6 +194,7 @@ public abstract class AbstractValueHint { if (myHideRunnable != null) { myHideRunnable.run(); } + onHintHidden(); } }); @@ -211,6 +212,10 @@ public abstract class AbstractValueHint { return true; } + protected void onHintHidden() { + + } + protected boolean isHintHidden() { return myHintHidden; }