diff --git a/include/TextInputWidget.h b/include/TextInputWidget.h index e32ce2ff..32da6ba3 100644 --- a/include/TextInputWidget.h +++ b/include/TextInputWidget.h @@ -79,6 +79,9 @@ signals: void startedTyping(); void stoppedTyping(); +protected: + void focusInEvent(QFocusEvent *event); + private: void showUploadSpinner(); QString parseEmoteCommand(const QString &cmd); diff --git a/src/ChatPage.cc b/src/ChatPage.cc index e32b288a..884e219a 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc @@ -562,6 +562,7 @@ ChatPage::showQuickSwitcher() connect(quickSwitcher_.data(), &QuickSwitcher::closing, this, [=]() { if (!this->quickSwitcherModal_.isNull()) this->quickSwitcherModal_->fadeOut(); + this->text_input_->setFocus(Qt::FocusReason::PopupFocusReason); }); } @@ -575,8 +576,12 @@ ChatPage::showQuickSwitcher() QMap rooms; - for (auto it = state_manager_.constBegin(); it != state_manager_.constEnd(); ++it) - rooms.insert(it.value().getName(), it.key()); + for (auto it = state_manager_.constBegin(); it != state_manager_.constEnd(); ++it) { + QString deambiguator = it.value().canonical_alias.content().alias(); + if (deambiguator == "") + deambiguator = it.key(); + rooms.insert(it.value().getName() + " (" + deambiguator + ")", it.key()); + } quickSwitcher_->setRoomList(rooms); quickSwitcherModal_->fadeIn(); diff --git a/src/MainWindow.cc b/src/MainWindow.cc index 5c188903..5b89cd0a 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc @@ -111,6 +111,11 @@ MainWindow::MainWindow(QWidget *parent) QShortcut *quitShortcut = new QShortcut(QKeySequence::Quit, this); connect(quitShortcut, &QShortcut::activated, this, QApplication::quit); + QShortcut *quickSwitchShortcut = new QShortcut(QKeySequence("Ctrl+K"), this); + connect(quickSwitchShortcut, &QShortcut::activated, this, [=]() { + chat_page_->showQuickSwitcher(); + }); + QSettings settings; if (hasActiveUser()) { @@ -125,10 +130,7 @@ MainWindow::MainWindow(QWidget *parent) void MainWindow::keyPressEvent(QKeyEvent *e) { - if ((e->key() == Qt::Key_K) && (e->modifiers().testFlag(Qt::ControlModifier))) - chat_page_->showQuickSwitcher(); - else - QMainWindow::keyPressEvent(e); + QMainWindow::keyPressEvent(e); } void diff --git a/src/TextInputWidget.cc b/src/TextInputWidget.cc index 7ebef6b1..e68b1c28 100644 --- a/src/TextInputWidget.cc +++ b/src/TextInputWidget.cc @@ -259,3 +259,9 @@ TextInputWidget::stopTyping() { input_->stopTyping(); } + +void +TextInputWidget::focusInEvent(QFocusEvent *event) +{ + input_->setFocus(event->reason()); +}