From 18c3ef052243ffa5ba1c69750381d1ab1b90c084 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Wed, 20 Jun 2018 10:59:06 +0300 Subject: [PATCH] #3656 Enter key handle fix. Check proposal popup in apply handler. Former-commit-id: 5c50dfb4baab6d69bad475dd218576af46adde00 --- .../resultset/ResultSetFilterPanel.java | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java index 23ea9e71ab..43fd8a1034 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetFilterPanel.java @@ -19,6 +19,7 @@ package org.jkiss.dbeaver.ui.controls.resultset; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.fieldassist.ContentProposal; +import org.eclipse.jface.fieldassist.ContentProposalAdapter; import org.eclipse.jface.fieldassist.IContentProposal; import org.eclipse.jface.fieldassist.IContentProposalProvider; import org.eclipse.jface.text.Document; @@ -95,6 +96,7 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider private final TextViewer filtersTextViewer; private final StyledText filtersText; + private final ContentProposalAdapter filtersProposalAdapter; private final ToolBar filterToolbar; private final ToolItem filtersApplyButton; @@ -188,11 +190,23 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider filtersClearButton.setEnabled(!CommonUtils.isEmpty(filterText)); } }); + this.filtersText.addTraverseListener(e -> { + if (e.detail == SWT.TRAVERSE_RETURN) { + if (filterExpanded) { + e.doit = true; + return; + } + e.doit = false; + e.detail = SWT.TRAVERSE_NONE; + } + }); + this.filtersText.addVerifyKeyListener(e -> { if (e.keyCode == SWT.CR) { if (filterExpanded && (e.stateMask & SWT.CTRL) == 0) { return; } + // Suppress Enter handling if filter is not expanded e.doit = false; } }); @@ -205,6 +219,9 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider } historyPanel.showFilterHistoryPopup(); } else if (e.keyCode == SWT.CR) { + if (filtersProposalAdapter != null && filtersProposalAdapter.isProposalPopupOpen()) { + return; + } if (filterExpanded && (e.stateMask & SWT.CTRL) == 0) { return; } @@ -232,7 +249,8 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider insertControlContents(control, text, cursorPosition); } }; - UIUtils.installContentProposal(filtersText, contentAdapter, this, false, false); + filtersProposalAdapter = UIUtils.installContentProposal( + filtersText, contentAdapter, this, false, false); } // Handle all shortcuts by filters editor, not by host editor @@ -304,18 +322,6 @@ class ResultSetFilterPanel extends Composite implements IContentProposalProvider historyForwardButton.addSelectionListener(new HistoryMenuListener(historyForwardButton, false)); } - this.addTraverseListener(e -> { - if (e.detail == SWT.TRAVERSE_RETURN) { - if (filterExpanded) { - e.doit = true; - return; - } - setCustomDataFilter(); - e.doit = false; - e.detail = SWT.TRAVERSE_NONE; - } - }); - this.addControlListener(new ControlListener() { @Override public void controlMoved(ControlEvent e) { -- GitLab