diff --git a/src/searchbar.cpp b/src/searchbar.cpp index 57e1817c..236fc981 100644 --- a/src/searchbar.cpp +++ b/src/searchbar.cpp @@ -71,7 +71,7 @@ SearchBarLineEdit::SearchBarLineEdit(QWidget *parent) : /* The items should be less than fetch size to enable scrolling. */ m_completer.setMaxVisibleItems(SuggestionListWorker::getFetchSize() / 2); - setCompleter(&m_completer); + m_completer.setWidget(this); /* QCompleter's uses default list views, which do not have headers. */ m_completer.setPopup(m_suggestionView); @@ -164,9 +164,18 @@ void SearchBarLineEdit::focusInEvent( QFocusEvent* event) if (event->reason() == Qt::ActiveWindowFocusReason || event->reason() == Qt::MouseFocusReason || event->reason() == Qt::ShortcutFocusReason) { + connect(&m_completer, QOverload::of(&QCompleter::activated), + this, &QLineEdit::setText,Qt::UniqueConnection); + connect(&m_completer, QOverload::of(&QCompleter::activated), this, QOverload::of(&SearchBarLineEdit::openCompletion), Qt::UniqueConnection); + + connect(&m_completer, QOverload::of(&QCompleter::highlighted), this, + [=](const QModelIndex &index){ + setText(index.isValid() ? index.data().toString() : m_searchbarInput); + }, + Qt::UniqueConnection); } QLineEdit::focusInEvent(event); } @@ -178,6 +187,7 @@ void SearchBarLineEdit::focusOutEvent(QFocusEvent* event) setText(m_title); } deselect(); + disconnect(&m_completer, nullptr, this, nullptr); return QLineEdit::focusOutEvent(event); }