diff --git a/src/core/coreconfig.h b/src/core/coreconfig.h index 69d89e5b..c5caa6b0 100644 --- a/src/core/coreconfig.h +++ b/src/core/coreconfig.h @@ -50,6 +50,7 @@ namespace vnotex AlternateTab, ActivateNextTab, ActivatePreviousTab, + FocusContentArea, MaxShortcut }; Q_ENUM(Shortcut) diff --git a/src/data/core/vnotex.json b/src/data/core/vnotex.json index 883717a9..24f8175c 100644 --- a/src/data/core/vnotex.json +++ b/src/data/core/vnotex.json @@ -43,7 +43,8 @@ "ActivateTab9" : "Ctrl+G, 9", "AlternateTab" : "Ctrl+G, 0", "ActivateNextTab" : "Ctrl+G, N", - "ActivatePreviousTab" : "Ctrl+G, P" + "ActivatePreviousTab" : "Ctrl+G, P", + "FocusContentArea" : "Ctrl+G, Y" }, "toolbar_icon_size" : 16, "note_management" : { diff --git a/src/widgets/findandreplacewidget.cpp b/src/widgets/findandreplacewidget.cpp index e14e65c1..616d43d5 100644 --- a/src/widgets/findandreplacewidget.cpp +++ b/src/widgets/findandreplacewidget.cpp @@ -59,6 +59,7 @@ void FindAndReplaceWidget::setupUI() titleLayout->addWidget(closeBtn); auto closeAct = new QAction(IconUtils::fetchIcon(iconFile), QString(), closeBtn); + closeAct->setToolTip(tr("Close")); closeBtn->setDefaultAction(closeAct); connect(closeAct, &QAction::triggered, this, &FindAndReplaceWidget::close); @@ -77,6 +78,8 @@ void FindAndReplaceWidget::setupUI() connect(m_findLineEdit, &QLineEdit::textChanged, m_findTextTimer, QOverload<>::of(&QTimer::start)); + setFocusProxy(m_findLineEdit); + auto findNextBtn = new QPushButton(tr("Find &Next"), this); findNextBtn->setDefault(true); connect(findNextBtn, &QPushButton::clicked, diff --git a/src/widgets/viewarea.cpp b/src/widgets/viewarea.cpp index a795677f..6abe3a37 100644 --- a/src/widgets/viewarea.cpp +++ b/src/widgets/viewarea.cpp @@ -813,6 +813,22 @@ void ViewArea::setupShortcuts() }); } } + + // FocusContentArea. + { + auto shortcut = WidgetUtils::createShortcut(coreConfig.getShortcut(CoreConfig::FocusContentArea), this); + if (shortcut) { + connect(shortcut, &QShortcut::activated, + this, [this]() { + auto win = getCurrentViewWindow(); + if (win) { + win->setFocus(); + } else { + setFocus(); + } + }); + } + } } bool ViewArea::close(Node *p_node, bool p_force) diff --git a/src/widgets/viewwindow.cpp b/src/widgets/viewwindow.cpp index 803fc398..b6adbb52 100644 --- a/src/widgets/viewwindow.cpp +++ b/src/widgets/viewwindow.cpp @@ -409,7 +409,12 @@ QAction *ViewWindow::addAction(QToolBar *p_toolBar, ViewWindowToolBarHelper::Act connect(act, &QAction::triggered, this, [this]() { if (findAndReplaceWidgetVisible()) { - hideFindAndReplaceWidget(); + const auto focusWidget = QApplication::focusWidget(); + if (m_findAndReplace == focusWidget || m_findAndReplace->isAncestorOf(focusWidget)) { + hideFindAndReplaceWidget(); + } else { + showFindAndReplaceWidget(); + } } else { showFindAndReplaceWidget(); }