diff --git a/cockatrice/src/tab_deck_editor.cpp b/cockatrice/src/tab_deck_editor.cpp index ab859cae9..558a6a529 100644 --- a/cockatrice/src/tab_deck_editor.cpp +++ b/cockatrice/src/tab_deck_editor.cpp @@ -50,8 +50,17 @@ void SearchLineEdit::keyPressEvent(QKeyEvent *event) { - if (treeView && ((event->key() == Qt::Key_Up) || (event->key() == Qt::Key_Down))) - QCoreApplication::sendEvent(treeView, event); + // List of key events that must be handled by the card list instead of the search box + static const QVector forwardToTreeView = {Qt::Key_Up, Qt::Key_Down, Qt::Key_PageDown, Qt::Key_PageUp}; + // forward only if the search text is empty + static const QVector forwardWhenEmpty = {Qt::Key_Home, Qt::Key_End}; + Qt::Key key = static_cast(event->key()); + if (treeView) { + if (forwardToTreeView.contains(key)) + QCoreApplication::sendEvent(treeView, event); + if (text().isEmpty() && forwardWhenEmpty.contains(key)) + QCoreApplication::sendEvent(treeView, event); + } LineEditUnfocusable::keyPressEvent(event); }