From 8e1ac75749d4913ec9407844f2fab0eba0a0bb5b Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sat, 31 Mar 2018 17:31:59 +0200 Subject: Add keyboard shortcuts for address bar menus --- src/addressbar/urllineedit.cpp | 46 ++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 13 deletions(-) (limited to 'src/addressbar/urllineedit.cpp') diff --git a/src/addressbar/urllineedit.cpp b/src/addressbar/urllineedit.cpp index cfc2ab0..a36e1fc 100644 --- a/src/addressbar/urllineedit.cpp +++ b/src/addressbar/urllineedit.cpp @@ -9,29 +9,41 @@ #include "urllineedit.h" #include #include +#include #include #include #include -UrlLineEdit::UrlLineEdit(QWidget *parent) +UrlLineEdit::UrlLineEdit(const QHash &config, QWidget *parent) : QLineEdit(parent) , m_listView(new Completer(this)) { + auto *focusShortcut = new QShortcut(QKeySequence(config.value("addressbar.shortcuts.focus")), parent); + connect(focusShortcut, &QShortcut::activated, this, [this]() { + setFocus(); + selectAll(); + }); + setPlaceholderText(tr("Enter address")); m_listView->setVisible(false); connect(this, &UrlLineEdit::textEdited, this, &UrlLineEdit::updateCompleter); - // leading position action - //addAction(style()->standardIcon(QStyle::SP_DriveNetIcon), QLineEdit::LeadingPosition); + m_pageMenuAction = addAction(style()->standardIcon(QStyle::SP_DriveNetIcon), QLineEdit::LeadingPosition); + m_pageMenuAction->setShortcut(QKeySequence(config.value("addressbar.shortcuts.pageMenu"))); + m_pageMenuAction->setToolTip(tr("Page Actions (%1)").arg(m_pageMenuAction->shortcut().toString())); + connect(m_pageMenuAction, &QAction::triggered, m_pageMenuAction, [&]() { + if(m_pageMenuAction->menu()) { + m_pageMenuAction->menu()->exec(this->mapToGlobal(QPoint(0, height()))); + } + }); - m_pageAction = addAction(style()->standardIcon(QStyle::SP_FileIcon), QLineEdit::TrailingPosition); - m_pageAction->setShortcut(QKeySequence("F10")); - m_pageAction->setToolTip(tr("Page Actions")); - connect(m_pageAction, &QAction::triggered, m_pageAction, [&]() { - //this->deselect(); - if(m_pageAction->menu() != nullptr) { - m_pageAction->menu()->exec(this->mapToGlobal(QPoint(width(), height()))); + m_toolsMenuAction = addAction(style()->standardIcon(QStyle::SP_FileIcon), QLineEdit::TrailingPosition); + m_toolsMenuAction->setShortcut(QKeySequence(config.value("addressbar.shortcuts.toolsMenu"))); + m_toolsMenuAction->setToolTip(tr("Tools (%1)").arg(m_toolsMenuAction->shortcut().toString())); + connect(m_toolsMenuAction, &QAction::triggered, m_toolsMenuAction, [&]() { + if(m_toolsMenuAction->menu()) { + m_toolsMenuAction->menu()->exec(this->mapToGlobal(QPoint(width(), height()))); } }); @@ -63,7 +75,7 @@ void UrlLineEdit::connectWebView(WebView *view) disconnect(urlChangedConnection); setUrl(view->url()); - m_pageAction->setMenu(view->pageMenu()); + m_pageMenuAction->setMenu(view->pageMenu()); urlChangedConnection = connect(view, &WebView::urlChanged, this, &UrlLineEdit::setUrl); } @@ -88,7 +100,7 @@ void UrlLineEdit::updateCompleter(const QString &text) return; } - const QList res = m_bookmarksModel->findItems(text, Qt::MatchContains | Qt::MatchRecursive, 1); + const QList res = m_bookmarksModel->findItems(text, Qt::MatchContains | Qt::MatchRecursive, 1); if(!m_listView->updateItems(res)) { m_listView->hide(); @@ -115,7 +127,9 @@ void UrlLineEdit::focusInEvent(QFocusEvent *event) void UrlLineEdit::focusOutEvent(QFocusEvent *event) { - setUrl(QUrl::fromUserInput(text())); + if(!text().startsWith('#')) + setUrl(QUrl::fromUserInput(text())); + QLineEdit::focusOutEvent(event); } @@ -131,9 +145,15 @@ void UrlLineEdit::keyPressEvent(QKeyEvent *event) setText(currentIndex.data().toString()); } m_listView->hide(); + event->accept(); return; } + } else if(event->key() == Qt::Key::Key_Escape) { + clearFocus(); + event->accept(); + return; } + QLineEdit::keyPressEvent(event); } -- cgit v1.2.1