diff options
Diffstat (limited to 'examples/webenginewidgets/demobrowser')
4 files changed, 29 insertions, 6 deletions
diff --git a/examples/webenginewidgets/demobrowser/browsermainwindow.cpp b/examples/webenginewidgets/demobrowser/browsermainwindow.cpp index b93c538d8..246ab2c0c 100644 --- a/examples/webenginewidgets/demobrowser/browsermainwindow.cpp +++ b/examples/webenginewidgets/demobrowser/browsermainwindow.cpp @@ -422,13 +422,31 @@ void BrowserMainWindow::setupMenu() m_historyBack = new QAction(tr("Back"), this); m_tabWidget->addWebAction(m_historyBack, QWebEnginePage::Back); - m_historyBack->setShortcuts(QKeySequence::Back); + QList<QKeySequence> backShortcuts = QKeySequence::keyBindings(QKeySequence::Back); + for (auto it = backShortcuts.begin(); it != backShortcuts.end();) { + // Chromium already handles navigate on backspace when appropriate. + if ((*it)[0] == Qt::Key_Backspace) + it = backShortcuts.erase(it); + else + ++it; + } + // For some reason Qt doesn't bind the dedicated Back key to Back. + backShortcuts.append(QKeySequence(Qt::Key_Back)); + m_historyBack->setShortcuts(backShortcuts); m_historyBack->setIconVisibleInMenu(false); historyActions.append(m_historyBack); m_historyForward = new QAction(tr("Forward"), this); m_tabWidget->addWebAction(m_historyForward, QWebEnginePage::Forward); - m_historyForward->setShortcuts(QKeySequence::Forward); + QList<QKeySequence> fwdShortcuts = QKeySequence::keyBindings(QKeySequence::Forward); + for (auto it = fwdShortcuts.begin(); it != fwdShortcuts.end();) { + if (((*it)[0] & Qt::Key_unknown) == Qt::Key_Backspace) + it = fwdShortcuts.erase(it); + else + ++it; + } + fwdShortcuts.append(QKeySequence(Qt::Key_Forward)); + m_historyForward->setShortcuts(fwdShortcuts); m_historyForward->setIconVisibleInMenu(false); historyActions.append(m_historyForward); diff --git a/examples/webenginewidgets/demobrowser/history.cpp b/examples/webenginewidgets/demobrowser/history.cpp index 188490aca..bce65b917 100644 --- a/examples/webenginewidgets/demobrowser/history.cpp +++ b/examples/webenginewidgets/demobrowser/history.cpp @@ -137,7 +137,7 @@ void HistoryManager::setHistory(const QList<HistoryItem> &history, bool loadedAn if (!loadedAndSorted) qSort(m_history.begin(), m_history.end()); - checkForExpired(); + checkForExpired(loadedAndSorted); if (loadedAndSorted) { m_lastSavedUrl = m_history.value(0).url; @@ -163,7 +163,7 @@ HistoryTreeModel *HistoryManager::historyTreeModel() const return m_historyTreeModel; } -void HistoryManager::checkForExpired() +void HistoryManager::checkForExpired(bool removeEntriesDirectly) { if (m_historyLimit < 0 || m_history.isEmpty()) return; @@ -185,7 +185,11 @@ void HistoryManager::checkForExpired() const HistoryItem& item = m_history.last(); // remove from saved file also m_lastSavedUrl = QString(); - emit entryRemoved(item); + + if (removeEntriesDirectly) + m_history.takeLast(); + else + emit entryRemoved(item); } if (nextTimeout > 0) diff --git a/examples/webenginewidgets/demobrowser/history.h b/examples/webenginewidgets/demobrowser/history.h index 6d7da5e6d..2a6dce9e1 100644 --- a/examples/webenginewidgets/demobrowser/history.h +++ b/examples/webenginewidgets/demobrowser/history.h @@ -126,7 +126,7 @@ public slots: private slots: void save(); - void checkForExpired(); + void checkForExpired(bool removeExpiredEntriesDirectly = false); protected: void addHistoryItem(const HistoryItem &item); diff --git a/examples/webenginewidgets/demobrowser/main.cpp b/examples/webenginewidgets/demobrowser/main.cpp index 4427a446d..41cae306a 100644 --- a/examples/webenginewidgets/demobrowser/main.cpp +++ b/examples/webenginewidgets/demobrowser/main.cpp @@ -54,6 +54,7 @@ int main(int argc, char **argv) { + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); Q_INIT_RESOURCE(data); BrowserApplication application(argc, argv); if (!application.isTheOnlyBrowser()) |