332{
333
334 if (event->type() == QEvent::KeyPress || event->type() == QEvent::ShortcutOverride) {
335 QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
337 const bool forward2list = (keyEvent->key() == Qt::Key_Up) || (keyEvent->key() == Qt::Key_Down) || (keyEvent->key() == Qt::Key_PageUp)
338 || (keyEvent->key() == Qt::Key_PageDown);
339 if (forward2list) {
340 QCoreApplication::sendEvent(
m_treeView, event);
341 return true;
342 }
343
344 if (keyEvent->key() == Qt::Key_Escape) {
346 keyEvent->accept();
347 hide();
348 return true;
349 }
350 } else {
351 const bool forward2input = (keyEvent->key() != Qt::Key_Up) && (keyEvent->key() != Qt::Key_Down) && (keyEvent->key() != Qt::Key_PageUp)
352 && (keyEvent->key() != Qt::Key_PageDown) && (keyEvent->key() != Qt::Key_Tab) && (keyEvent->key() != Qt::Key_Backtab);
353 if (forward2input) {
354 QCoreApplication::sendEvent(
m_lineEdit, event);
355 return true;
356 }
357 }
358 }
359
360
361 else if (event->type() == QEvent::FocusOut && !(
m_lineEdit->hasFocus() ||
m_treeView->hasFocus())) {
363 hide();
364 return true;
365 }
366
367 return QWidget::eventFilter(obj, event);
368}