From f7110be2c88596814d1210d8fe1af9c501f9555e Mon Sep 17 00:00:00 2001 From: Szabolcs David Date: Wed, 28 Nov 2018 14:09:50 +0100 Subject: 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 --- src/webengine/api/qquickwebengineaction_p_p.h | 6 +++--- src/webengine/api/qquickwebengineview.cpp | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src/webengine') 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); } -- cgit v1.2.3