aboutsummaryrefslogtreecommitdiff
path: root/src/addressbar/urllineedit.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-03-31 17:31:59 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-03-31 17:31:59 +0200
commit8e1ac75749d4913ec9407844f2fab0eba0a0bb5b (patch)
tree4d7fdc1257f4ad83bd79c3031b8cf780ba776f9b /src/addressbar/urllineedit.cpp
parentFix crash when starting a second instance (diff)
downloadsmolbote-8e1ac75749d4913ec9407844f2fab0eba0a0bb5b.tar.xz
Add keyboard shortcuts for address bar menus
Diffstat (limited to 'src/addressbar/urllineedit.cpp')
-rw-r--r--src/addressbar/urllineedit.cpp46
1 files changed, 33 insertions, 13 deletions
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 <QLabel>
#include <QMenu>
+#include <QShortcut>
#include <QTimer>
#include <QWidgetAction>
#include <bookmarks/bookmarksview.h>
-UrlLineEdit::UrlLineEdit(QWidget *parent)
+UrlLineEdit::UrlLineEdit(const QHash<QString, QString> &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<QTreeWidgetItem*> res = m_bookmarksModel->findItems(text, Qt::MatchContains | Qt::MatchRecursive, 1);
+ const QList<QTreeWidgetItem *> 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);
}