From ee5a11ae72953ff9bb9e175cb14e91b60aa260ed Mon Sep 17 00:00:00 2001 From: David Rosca Date: Sun, 3 Dec 2017 11:41:16 +0100 Subject: [PATCH] Fix initial focus when opening new browser window Web page is now correctly focused when opening browser window or opening/restoring sessions. This is still not absolutely reliable solution as it uses delay to change focus to webview, because QWebEngineView doesn't accept focus until after it is initialized. --- src/lib/app/browserwindow.cpp | 25 +++++++++++++++---------- src/lib/app/browserwindow.h | 1 + 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/lib/app/browserwindow.cpp b/src/lib/app/browserwindow.cpp index 52578463b..e0aea48f4 100644 --- a/src/lib/app/browserwindow.cpp +++ b/src/lib/app/browserwindow.cpp @@ -230,16 +230,7 @@ void BrowserWindow::postLaunch() raise(); activateWindow(); - - QTimer::singleShot(0, this, [this]() { - // Scroll to current tab - tabWidget()->tabBar()->ensureVisible(); - // Update focus - if (!m_startPage && LocationBar::convertUrlToText(weView()->page()->requestedUrl()).isEmpty()) - locationBar()->setFocus(); - else - weView()->setFocus(); - }); + updateStartupFocus(); } void BrowserWindow::setupUi() @@ -383,6 +374,19 @@ void BrowserWindow::setupMenu() connect(inspectorAction, SIGNAL(activated()), this, SLOT(toggleWebInspector())); } +void BrowserWindow::updateStartupFocus() +{ + QTimer::singleShot(500, this, [this]() { + // Scroll to current tab + tabWidget()->tabBar()->ensureVisible(); + // Update focus + if (!m_startPage && LocationBar::convertUrlToText(weView()->page()->requestedUrl()).isEmpty()) + locationBar()->setFocus(); + else + weView()->setFocus(); + }); +} + QAction* BrowserWindow::createEncodingAction(const QString &codecName, const QString &activeCodecName, QMenu* menu) { @@ -884,6 +888,7 @@ void BrowserWindow::restoreWindowState(const RestoreManager::WindowData &d) { restoreState(d.windowState); m_tabWidget->restoreState(d.tabsState, d.currentTab); + updateStartupFocus(); } void BrowserWindow::createToolbarsMenu(QMenu* menu) diff --git a/src/lib/app/browserwindow.h b/src/lib/app/browserwindow.h index 66271b087..39782e503 100644 --- a/src/lib/app/browserwindow.h +++ b/src/lib/app/browserwindow.h @@ -170,6 +170,7 @@ private: void setupUi(); void setupMenu(); + void updateStartupFocus(); QAction *createEncodingAction(const QString &codecName, const QString &activeCodecName, QMenu *menu);