Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoykoAlex2019-09-13 19:46:14 +0000
committerMickael Istria2019-09-20 07:37:24 +0000
commitd82a4a4095918a66621d6c589379d3ba9b10a03f (patch)
tree9ccc94b68a8f3d59f1170480e1018a3f07341dfa /org.eclipse.jface.text/src/org/eclipse/jface
parentb4ca5bddb0bb5b94ee079ba332f8d7e79e6b0047 (diff)
downloadeclipse.platform.text-d82a4a4095918a66621d6c589379d3ba9b10a03f.tar.gz
eclipse.platform.text-d82a4a4095918a66621d6c589379d3ba9b10a03f.tar.xz
eclipse.platform.text-d82a4a4095918a66621d6c589379d3ba9b10a03f.zip
Bug 550920 - Recompute proposals if some cannot be filtered out
Change-Id: I51282e29252b8e27d318fceed7d9634cb708f2e0 Signed-off-by: BoykoAlex <aboyko@pivotal.io>
Diffstat (limited to 'org.eclipse.jface.text/src/org/eclipse/jface')
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/AsyncCompletionProposalPopup.java35
1 files changed, 20 insertions, 15 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/AsyncCompletionProposalPopup.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/AsyncCompletionProposalPopup.java
index 3c1a8100422..89520fefa20 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/AsyncCompletionProposalPopup.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/AsyncCompletionProposalPopup.java
@@ -32,7 +32,6 @@ import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.core.runtime.ISafeRunnable;
import org.eclipse.core.runtime.SafeRunner;
@@ -231,21 +230,27 @@ class AsyncCompletionProposalPopup extends CompletionProposalPopup {
}
List<ICompletionProposal> newProposals= new ArrayList<>(computedProposals);
fComputedProposals= newProposals;
- Display.getDefault().asyncExec(() -> {
- if (autoInsert && !autoActivated && remaining.isEmpty() && newProposals.size() == 1 && canAutoInsert(newProposals.get(0))) {
- if (Helper.okToUse(fProposalShell)) {
- insertProposal(newProposals.get(0), (char) 0, 0, offset);
- hide();
+ Control control= fContentAssistSubjectControlAdapter.getControl();
+ if (!control.isDisposed()) {
+ control.getDisplay().asyncExec(() -> {
+ // Don't run anything if offset has changed while runnable was scheduled (i.e. filtering might have occurred for fast CA)
+ if (offset == fInvocationOffset) {
+ if (autoInsert && !autoActivated && remaining.isEmpty() && newProposals.size() == 1 && canAutoInsert(newProposals.get(0))) {
+ if (Helper.okToUse(fProposalShell)) {
+ insertProposal(newProposals.get(0), (char) 0, 0, offset);
+ hide();
+ }
+ return;
+ }
+ if (remaining.isEmpty() && callback != null) {
+ callback.accept(newProposals);
+ } else {
+ setProposals(newProposals, false);
+ displayProposals();
+ }
}
- return;
- }
- if (remaining.isEmpty() && callback != null) {
- callback.accept(newProposals);
- } else {
- setProposals(newProposals, false);
- displayProposals();
- }
- });
+ });
+ }
});
}
displayProposals();

Back to the top