diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2019-04-16 11:11:32 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2019-08-21 17:04:16 +0200 |
commit | 689d6dbf9f302c7379af447668ac113d4f19230d (patch) | |
tree | e36d10ffb9576ac93e8490f342897f1d88c9ebd1 | |
parent | 7e234aca2783f089ba2401b84ee2226f5de153b6 (diff) |
Assistant/Topic chooser: Fix PageUp/PageDown key handling
Pass the keypress event to the listwidget in case of PageUp/PageDown.
Don't pass the event in case of Home/End keys, since they are
handled by the lineedit itself.
Fixes: QTBUG-36068
Change-Id: Ia67904d4755fbda40a3338a848a158bb7b1791de
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
-rw-r--r-- | src/assistant/assistant/topicchooser.cpp | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/src/assistant/assistant/topicchooser.cpp b/src/assistant/assistant/topicchooser.cpp index 478ca65ed..d058646c5 100644 --- a/src/assistant/assistant/topicchooser.cpp +++ b/src/assistant/assistant/topicchooser.cpp @@ -120,23 +120,14 @@ bool TopicChooser::eventFilter(QObject *object, QEvent *event) { TRACE_OBJ if (object == ui.lineEdit && event->type() == QEvent::KeyPress) { - QModelIndex idx = ui.listWidget->currentIndex(); - switch ((static_cast<QKeyEvent*>(event)->key())) { - case Qt::Key_Up: - idx = m_filterModel->index(idx.row() - 1, idx.column(), - idx.parent()); - if (idx.isValid()) - ui.listWidget->setCurrentIndex(idx); - break; - - case Qt::Key_Down: - idx = m_filterModel->index(idx.row() + 1, idx.column(), - idx.parent()); - if (idx.isValid()) - ui.listWidget->setCurrentIndex(idx); - break; - - default: ; + QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event); + switch (keyEvent->key()) { + case Qt::Key_Up: + case Qt::Key_Down: + case Qt::Key_PageUp: + case Qt::Key_PageDown: + QCoreApplication::sendEvent(ui.listWidget, event); + break; } } else if (ui.lineEdit && event->type() == QEvent::FocusIn && static_cast<QFocusEvent *>(event)->reason() != Qt::MouseFocusReason) { |