Improvements to the quick switcher (#109)

- Ghetto disambiguation for the quick switcher
- Fix the Ctrl+K shortcut
- Fix keyboard focus when the quick switcher is closed

fixes #114
remotes/origin/HEAD
Jani Mustonen 7 years ago committed by mujx
parent beda0db543
commit 13cb0521fa
  1. 1
      include/MainWindow.h
  2. 3
      include/TextInputWidget.h
  3. 9
      src/ChatPage.cc
  4. 14
      src/MainWindow.cc
  5. 11
      src/QuickSwitcher.cc
  6. 6
      src/TextInputWidget.cc

@ -47,7 +47,6 @@ public:
protected: protected:
void closeEvent(QCloseEvent *event); void closeEvent(QCloseEvent *event);
void keyPressEvent(QKeyEvent *event);
private slots: private slots:
// Handle interaction with the tray icon. // Handle interaction with the tray icon.

@ -79,6 +79,9 @@ signals:
void startedTyping(); void startedTyping();
void stoppedTyping(); void stoppedTyping();
protected:
void focusInEvent(QFocusEvent *event);
private: private:
void showUploadSpinner(); void showUploadSpinner();
QString parseEmoteCommand(const QString &cmd); QString parseEmoteCommand(const QString &cmd);

@ -562,6 +562,7 @@ ChatPage::showQuickSwitcher()
connect(quickSwitcher_.data(), &QuickSwitcher::closing, this, [=]() { connect(quickSwitcher_.data(), &QuickSwitcher::closing, this, [=]() {
if (!this->quickSwitcherModal_.isNull()) if (!this->quickSwitcherModal_.isNull())
this->quickSwitcherModal_->fadeOut(); this->quickSwitcherModal_->fadeOut();
this->text_input_->setFocus(Qt::FocusReason::PopupFocusReason);
}); });
} }
@ -575,8 +576,12 @@ ChatPage::showQuickSwitcher()
QMap<QString, QString> rooms; QMap<QString, QString> rooms;
for (auto it = state_manager_.constBegin(); it != state_manager_.constEnd(); ++it) for (auto it = state_manager_.constBegin(); it != state_manager_.constEnd(); ++it) {
rooms.insert(it.value().getName(), it.key()); QString deambiguator = it.value().canonical_alias.content().alias();
if (deambiguator == "")
deambiguator = it.key();
rooms.insert(it.value().getName() + " (" + deambiguator + ")", it.key());
}
quickSwitcher_->setRoomList(rooms); quickSwitcher_->setRoomList(rooms);
quickSwitcherModal_->fadeIn(); quickSwitcherModal_->fadeIn();

@ -114,6 +114,11 @@ MainWindow::MainWindow(QWidget *parent)
QShortcut *quitShortcut = new QShortcut(QKeySequence::Quit, this); QShortcut *quitShortcut = new QShortcut(QKeySequence::Quit, this);
connect(quitShortcut, &QShortcut::activated, this, QApplication::quit); 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; QSettings settings;
trayIcon_->setVisible(userSettings_->isTrayEnabled()); trayIcon_->setVisible(userSettings_->isTrayEnabled());
@ -127,15 +132,6 @@ 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);
}
void void
MainWindow::restoreWindowSize() MainWindow::restoreWindowSize()
{ {

@ -122,7 +122,16 @@ QuickSwitcher::QuickSwitcher(QWidget *parent)
roomSearch_, &RoomSearchInput::hiding, this, [=]() { completer_->popup()->hide(); }); roomSearch_, &RoomSearchInput::hiding, this, [=]() { completer_->popup()->hide(); });
connect(roomSearch_, &QLineEdit::returnPressed, this, [=]() { connect(roomSearch_, &QLineEdit::returnPressed, this, [=]() {
emit closing(); emit closing();
emit roomSelected(rooms_[this->roomSearch_->text().trimmed()]);
QString text("");
if (selection_ == -1) {
completer_->setCurrentRow(0);
text = completer_->currentCompletion();
} else {
text = this->roomSearch_->text().trimmed();
}
emit roomSelected(rooms_[text]);
roomSearch_->clear(); roomSearch_->clear();
}); });

@ -259,3 +259,9 @@ TextInputWidget::stopTyping()
{ {
input_->stopTyping(); input_->stopTyping();
} }
void
TextInputWidget::focusInEvent(QFocusEvent *event)
{
input_->setFocus(event->reason());
}

Loading…
Cancel
Save