summaryrefslogtreecommitdiff
path: root/src/mainwindow.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-04-17 08:19:22 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2020-04-17 08:19:22 -0400
commitd7ceadeae173e26d63db0b58b6ea5a3ed839999c (patch)
tree54e12821cf22477e9a49726ca52f3d36397cad25 /src/mainwindow.cpp
parent15e04d4fe891702808ba7e66a568fd5c6dada276 (diff)
hook ctrl+f and escape directly on widgets instead of on the main window to allow other widgets to use the same shortcuts, like the FilterWidget
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r--src/mainwindow.cpp77
1 files changed, 39 insertions, 38 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 85d0fe39..cac9a0b9 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -204,6 +204,42 @@ QString UnmanagedModName()
bool runLoot(QWidget* parent, OrganizerCore& core, bool didUpdateMasterList);
+
+void setFilterShortcuts(QWidget* widget, QLineEdit* edit)
+{
+ auto activate = [=] {
+ edit->setFocus();
+ edit->selectAll();
+ };
+
+ auto reset = [=] {
+ edit->clear();
+ widget->setFocus();
+ };
+
+ auto hookActivate = [activate](auto* w) {
+ auto* s = new QShortcut(QKeySequence::Find, w);
+ s->setAutoRepeat(false);
+ s->setContext(Qt::WidgetWithChildrenShortcut);
+ QObject::connect(s, &QShortcut::activated, activate);
+ };
+
+ auto hookReset = [reset](auto* w) {
+ auto* s = new QShortcut(QKeySequence(Qt::Key_Escape), w);
+ s->setAutoRepeat(false);
+ s->setContext(Qt::WidgetWithChildrenShortcut);
+ QObject::connect(s, &QShortcut::activated, reset);
+ };
+
+
+ hookActivate(widget);
+ hookReset(widget);
+
+ hookActivate(edit);
+ hookReset(edit);
+}
+
+
MainWindow::MainWindow(Settings &settings
, OrganizerCore &organizerCore
, PluginContainer &pluginContainer
@@ -432,8 +468,9 @@ MainWindow::MainWindow(Settings &settings
new QShortcut(QKeySequence::Refresh, this, SLOT(refreshProfile_activated()));
- new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_F), this, SLOT(search_activated()));
- new QShortcut(QKeySequence(Qt::Key_Escape), this, SLOT(searchClear_activated()));
+ setFilterShortcuts(ui->modList, ui->modFilterEdit);
+ setFilterShortcuts(ui->espList, ui->espFilterEdit);
+ setFilterShortcuts(ui->downloadView, ui->downloadFilterEdit);
m_UpdateProblemsTimer.setSingleShot(true);
connect(&m_UpdateProblemsTimer, SIGNAL(timeout()), this, SLOT(updateProblemsButton()));
@@ -3353,42 +3390,6 @@ void MainWindow::refreshProfile_activated()
m_OrganizerCore.profileRefresh();
}
-void MainWindow::search_activated()
-{
- if (ui->modList->hasFocus() || ui->modFilterEdit->hasFocus()) {
- ui->modFilterEdit->setFocus();
- ui->modFilterEdit->setSelection(0, INT_MAX);
- }
-
- else if (ui->espList->hasFocus() || ui->espFilterEdit->hasFocus()) {
- ui->espFilterEdit->setFocus();
- ui->espFilterEdit->setSelection(0, INT_MAX);
- }
-
- else if (ui->downloadView->hasFocus() || ui->downloadFilterEdit->hasFocus()) {
- ui->downloadFilterEdit->setFocus();
- ui->downloadFilterEdit->setSelection(0, INT_MAX);
- }
-}
-
-void MainWindow::searchClear_activated()
-{
- if (ui->modList->hasFocus() || ui->modFilterEdit->hasFocus()) {
- ui->modFilterEdit->clear();
- ui->modList->setFocus();
- }
-
- else if (ui->espList->hasFocus() || ui->espFilterEdit->hasFocus()) {
- ui->espFilterEdit->clear();
- ui->espList->setFocus();
- }
-
- else if (ui->downloadView->hasFocus() || ui->downloadFilterEdit->hasFocus()) {
- ui->downloadFilterEdit->clear();
- ui->downloadView->setFocus();
- }
-}
-
void MainWindow::updateModCount()
{
int activeCount = 0;