From 6534b09073791398bad99863821740e986915bff Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Wed, 1 Jun 2016 17:54:49 +0200 Subject: Add focusOnNavigationEnabled setting The focusOnNavigationEnabled setting allows changing the behavior of whether a WebEngine view (widget or quick) will automatically get focus, whenever a navigation action happens (load, reload, previous history entry, etc). The default behavior before this patch was to always grab the focus. [ChangeLog][QtWebEngine][General] Add focusOnNavigationEnabled setting which allows controlling whether a web view will receive focus on a navigation request. Previously the view always received the focus. Task-number: QTBUG-52999 Change-Id: I6d30d973a41b53011131f21dcecbf6ec4d652759 Reviewed-by: Kai Koehne --- src/webenginewidgets/api/qwebenginepage_p.h | 1 + src/webenginewidgets/api/qwebenginesettings.cpp | 2 ++ src/webenginewidgets/api/qwebenginesettings.h | 3 ++- src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc | 4 ++++ src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc | 5 +++++ 5 files changed, 14 insertions(+), 1 deletion(-) (limited to 'src/webenginewidgets') diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h index 03883bb44..8d2a86350 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -174,6 +174,7 @@ public: QWebChannel *webChannel; unsigned int webChannelWorldId; QUrl iconUrl; + bool m_navigationActionTriggered; mutable QtWebEngineCore::CallbackDirectory m_callbacks; mutable QAction *actions[QWebEnginePage::WebActionCount]; diff --git a/src/webenginewidgets/api/qwebenginesettings.cpp b/src/webenginewidgets/api/qwebenginesettings.cpp index dfca16287..dbc6a0e9b 100644 --- a/src/webenginewidgets/api/qwebenginesettings.cpp +++ b/src/webenginewidgets/api/qwebenginesettings.cpp @@ -89,6 +89,8 @@ static WebEngineSettings::Attribute toWebEngineAttribute(QWebEngineSettings::Web return WebEngineSettings::AutoLoadIconsForPage; case QWebEngineSettings::TouchIconsEnabled: return WebEngineSettings::TouchIconsEnabled; + case QWebEngineSettings::FocusOnNavigationEnabled: + return WebEngineSettings::FocusOnNavigationEnabled; default: return WebEngineSettings::UnsupportedInCoreSettings; } diff --git a/src/webenginewidgets/api/qwebenginesettings.h b/src/webenginewidgets/api/qwebenginesettings.h index 8eda50ee2..fb7fcfee5 100644 --- a/src/webenginewidgets/api/qwebenginesettings.h +++ b/src/webenginewidgets/api/qwebenginesettings.h @@ -85,7 +85,8 @@ public: WebGLEnabled, Accelerated2dCanvasEnabled, AutoLoadIconsForPage, - TouchIconsEnabled + TouchIconsEnabled, + FocusOnNavigationEnabled }; enum FontSize { diff --git a/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc index a0dc49d0a..560d4a2e4 100644 --- a/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc +++ b/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc @@ -87,6 +87,10 @@ QWebEngineScript::ScriptWorldId provides some predefined IDs for this purpose. Using the \c runJavaScript() version without the world ID is the same as running the script in the \c MainWorld. + + The \l {QWebEngineSettings::FocusOnNavigationEnabled} {FocusOnNavigationEnabled} setting can be + used to stop the view associated with the page from automatically receiving focus when a + navigation operation occurs (like loading or reloading a page or navigating through history). */ /*! diff --git a/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc index 558aa1f50..5bea28f55 100644 --- a/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc +++ b/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc @@ -146,6 +146,11 @@ \value TouchIconsEnabled Enables support for touch icons and precomposed touch icons Disabled by default. (Added in Qt 5.7) + \value FocusOnNavigationEnabled + Gives focus to the view associated with the page, whenever a navigation operation occurs + (load, stop, reload, reload and bypass cache, forward, backward, set content, and so + on). + Enabled by default. (Added in Qt 5.8) */ /*! -- cgit v1.2.3