From bcd313883b87e8d1e975ca1bc8d21e2b98e06e46 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 9 Mar 2011 18:36:25 +0100 Subject: [PATCH] correctly remove the selection listener on empty autopopup phase end --- .../intellij/codeInsight/completion/CompletionPhase.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionPhase.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionPhase.java index 50a2418fe7bf..26928b1631ed 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionPhase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionPhase.java @@ -216,6 +216,7 @@ public abstract class CompletionPhase implements Disposable { private final DocumentAdapter documentListener; private final PropertyChangeListener lookupListener; private boolean changeGuard = false; + private final SelectionListener selectionListener; public EmptyAutoPopup(CompletionProgressIndicator indicator) { super(indicator); @@ -244,12 +245,12 @@ public abstract class CompletionPhase implements Disposable { } } }; - editor.getSelectionModel().addSelectionListener(new SelectionListener() { + selectionListener = new SelectionListener() { @Override public void selectionChanged(SelectionEvent e) { stopAutoPopup(); } - }); + }; documentListener = new DocumentAdapter() { @Override public void documentChanged(DocumentEvent e) { @@ -268,6 +269,7 @@ public abstract class CompletionPhase implements Disposable { editor.addEditorMouseListener(mouseListener); editor.getCaretModel().addCaretListener(caretListener); editor.getDocument().addDocumentListener(documentListener); + editor.getSelectionModel().addSelectionListener(selectionListener); LookupManager.getInstance(project).addPropertyChangeListener(lookupListener); } @@ -275,6 +277,7 @@ public abstract class CompletionPhase implements Disposable { public void dispose() { editor.removeEditorMouseListener(mouseListener); editor.getCaretModel().removeCaretListener(caretListener); + editor.getSelectionModel().removeSelectionListener(selectionListener); editor.getDocument().removeDocumentListener(documentListener); LookupManager.getInstance(project).removePropertyChangeListener(lookupListener); }