From 0b3029b3c48af4bf8aa302c28e66bce771213c94 Mon Sep 17 00:00:00 2001 From: christarazi Date: Tue, 10 Apr 2018 01:47:23 -0700 Subject: Implement pressing tab to navigate auto completion (#294) Fixes #287 * Fix pop-up not showing when less than max * Select suggestion by pressing Enter --- src/TextInputWidget.cc | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/TextInputWidget.cc') diff --git a/src/TextInputWidget.cc b/src/TextInputWidget.cc index fde4a061..459fcd51 100644 --- a/src/TextInputWidget.cc +++ b/src/TextInputWidget.cc @@ -86,6 +86,16 @@ FilteredTextEdit::FilteredTextEdit(QWidget *parent) cursor.insertText(text); }); + // For cycling through the suggestions by hitting tab. + connect(this, + &FilteredTextEdit::cycleSuggestions, + &popup_, + &SuggestionsPopup::cycleThroughSuggestions); + connect(this, + &FilteredTextEdit::selectHoveredSuggestion, + &popup_, + &SuggestionsPopup::selectHoveredSuggestion); + previewDialog_.hide(); } @@ -128,10 +138,15 @@ FilteredTextEdit::keyPressEvent(QKeyEvent *event) if (popup_.isVisible()) { switch (event->key()) { + case Qt::Key_Tab: + emit cycleSuggestions(); + return; case Qt::Key_Enter: case Qt::Key_Return: + emit selectHoveredSuggestion(); + return; case Qt::Key_Escape: - case Qt::Key_Tab: + break; case Qt::Key_Space: case Qt::Key_Backtab: { closeSuggestions(); @@ -464,6 +479,8 @@ TextInputWidget::TextInputWidget(QWidget *parent) if (items.size() >= MaxPopupItems) std::advance(end, MaxPopupItems); + else if (items.size() > 0) + std::advance(end, items.size()); for (auto it = items.begin(); it != end; it++) { const auto user = it->second; -- cgit 1.5.1