From 412de05407ea54bafb5f333de945701d0c786bdc Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Wed, 4 Nov 2020 13:59:08 +0100 Subject: [PATCH] Allow settings modification before WebView Edge init Setting EnableContextMenu and EnableAccessToDevTools where ignored before the webview loaded content. This would often be set directly after creation and work like this with other backends. --- include/wx/msw/private/webview_edge.h | 2 ++ src/msw/webview_edge.cpp | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/wx/msw/private/webview_edge.h b/include/wx/msw/private/webview_edge.h index e666f1f1c0..2ebc5a468b 100644 --- a/include/wx/msw/private/webview_edge.h +++ b/include/wx/msw/private/webview_edge.h @@ -36,6 +36,8 @@ public: bool m_initialized; bool m_isBusy; wxString m_pendingURL; + int m_pendingContextMenuEnabled; + int m_pendingAccessToDevToolsEnabled; // WebView Events tokens EventRegistrationToken m_navigationStartingToken = { }; diff --git a/src/msw/webview_edge.cpp b/src/msw/webview_edge.cpp index 4da9765eae..b741a450b5 100644 --- a/src/msw/webview_edge.cpp +++ b/src/msw/webview_edge.cpp @@ -76,6 +76,8 @@ bool wxWebViewEdgeImpl::Create() { m_initialized = false; m_isBusy = false; + m_pendingContextMenuEnabled = -1; + m_pendingAccessToDevToolsEnabled = -1; m_historyLoadingFromList = false; m_historyEnabled = true; @@ -310,6 +312,18 @@ HRESULT wxWebViewEdgeImpl::OnWebViewCreated(HRESULT result, ICoreWebView2Control this, &wxWebViewEdgeImpl::OnContentLoading).Get(), &m_contentLoadingToken); + if (m_pendingContextMenuEnabled != -1) + { + m_ctrl->EnableContextMenu(m_pendingContextMenuEnabled == 1); + m_pendingContextMenuEnabled = -1; + } + + if (m_pendingAccessToDevToolsEnabled != -1) + { + m_ctrl->EnableAccessToDevTools(m_pendingAccessToDevToolsEnabled == 1); + m_pendingContextMenuEnabled = -1; + } + if (!m_pendingURL.empty()) { m_ctrl->LoadURL(m_pendingURL); @@ -706,6 +720,8 @@ void wxWebViewEdge::EnableContextMenu(bool enable) wxCOMPtr settings(m_impl->GetSettings()); if (settings) settings->put_AreDefaultContextMenusEnabled(enable); + else + m_impl->m_pendingContextMenuEnabled = enable ? 1 : 0; } bool wxWebViewEdge::IsContextMenuEnabled() const @@ -727,6 +743,8 @@ void wxWebViewEdge::EnableAccessToDevTools(bool enable) wxCOMPtr settings(m_impl->GetSettings()); if (settings) settings->put_AreDevToolsEnabled(enable); + else + m_impl->m_pendingAccessToDevToolsEnabled = enable ? 1 : 0; } bool wxWebViewEdge::IsAccessToDevToolsEnabled() const