void LaunchyWidget::focusOutEvent(QFocusEvent* event) { if (event->reason() == Qt::ActiveWindowFocusReason) { if (gSettings->value("GenOps/hideiflostfocus", false).toBool() && !isActiveWindow() && !alternatives->isActiveWindow() && !optionsOpen) { hideLaunchy(); } } }
void LaunchyWidget::keyPressEvent(QKeyEvent* event) { #ifdef Q_WS_X11 // ignore hotkey if (event->modifiers() + event->key() == getHotkey()) { return; } #endif if (event->key() == Qt::Key_Escape) { if (alternatives->isVisible()) showAlternatives(false); else hideLaunchy(); } else if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) { doEnter(); } else if (event->key() == Qt::Key_Down || event->key() == Qt::Key_PageDown || event->key() == Qt::Key_Up || event->key() == Qt::Key_PageUp) { if (alternatives->isVisible()) { if (!alternatives->isActiveWindow()) { // Don't refactor the activateWindow outside the if, it won't work properly any other way! if (alternatives->currentRow() < 0 && alternatives->count() > 0) { alternatives->activateWindow(); alternatives->setCurrentRow(0); } else { alternatives->activateWindow(); qApp->sendEvent(alternatives, event); } } } else if (event->key() == Qt::Key_Down || event->key() == Qt::Key_PageDown) { // do a search and show the results, selecting the first one searchOnInput(); if (searchResults.count() > 0) { showAlternatives(); alternatives->activateWindow(); if (alternatives->count() > 0) alternatives->setCurrentRow(0); } } } else if ((event->key() == Qt::Key_Tab || event->key() == Qt::Key_Backspace) && event->modifiers() == Qt::ShiftModifier) { doBackTab(); processKey(); } else if (event->key() == Qt::Key_Tab) { doTab(); processKey(); } /* else if (event->key() == Qt::Key_Slash || event->key() == Qt::Key_Backslash) { if (inputData.count() > 0 && inputData.last().hasLabel(LABEL_FILE)) doTab(); processKey(); } */ else if (event->text().length() > 0) { // process any other key with character output event->ignore(); processKey(); } }