diff options
author | Szabolcs David <davidsz@inf.u-szeged.hu> | 2018-11-28 14:09:50 +0100 |
---|---|---|
committer | Szabolcs David <davidsz@inf.u-szeged.hu> | 2018-11-29 15:47:14 +0000 |
commit | f7110be2c88596814d1210d8fe1af9c501f9555e (patch) | |
tree | 8849a713263be9a1b362937cb5bf1ed9fad9d269 /src | |
parent | 35ee29eb348b4629f47a6b700f9e2c356265aeba (diff) |
Avoid binding loops caused by default context menu
When a WebEngineAction is tied to a UI element and a context menu request
modifies its enabled state, the users get a warning:
'Binding loop detected for property "enabled"'
Avoid triggering the action's notifier signal when the default context
menu is being built.
Change-Id: Ie23087f0b879399cf1cb88c44a42cd0be537a750
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/webengine/api/qquickwebengineaction_p_p.h | 6 | ||||
-rw-r--r-- | src/webengine/api/qquickwebengineview.cpp | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/webengine/api/qquickwebengineaction_p_p.h b/src/webengine/api/qquickwebengineaction_p_p.h index 4320f73e4..d2ead30e9 100644 --- a/src/webengine/api/qquickwebengineaction_p_p.h +++ b/src/webengine/api/qquickwebengineaction_p_p.h @@ -72,13 +72,13 @@ public: void trigger(); -private: - QQuickWebEngineAction *q_ptr; - QVariant m_data; QString m_text; QString m_iconName; bool m_enabled; + +private: + QQuickWebEngineAction *q_ptr; }; QT_END_NAMESPACE diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index d9667a643..b9ae06aeb 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -2225,7 +2225,8 @@ void QQuickContextMenuBuilder::addMenuItem(ContextMenuItem menuItem) m_view->d_ptr->ui()->addMenuSeparator(m_menu); return; } - action->d_ptr->setEnabled(isMenuItemEnabled(menuItem)); + // Set enabled property directly with avoiding binding loops caused by its notifier signal. + action->d_ptr->m_enabled = isMenuItemEnabled(menuItem); m_view->d_ptr->ui()->addMenuItem(action, m_menu); } |