From 3d568c7105252e93ddd27f6e8bacf4c857d2ce8d Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Tue, 16 Mar 2021 22:09:55 +0100 Subject: [PATCH] Create wxWebViewEdge implementation in constructor This helps with various potential error when using two step creation --- include/wx/msw/webview_edge.h | 7 ++----- src/msw/webview_edge.cpp | 21 ++++++++++++++++++++- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/include/wx/msw/webview_edge.h b/include/wx/msw/webview_edge.h index 6f233ec598..bb58d97b50 100644 --- a/include/wx/msw/webview_edge.h +++ b/include/wx/msw/webview_edge.h @@ -23,7 +23,7 @@ class WXDLLIMPEXP_WEBVIEW wxWebViewEdge : public wxWebView { public: - wxWebViewEdge() {} + wxWebViewEdge(); wxWebViewEdge(wxWindow* parent, wxWindowID id, @@ -31,10 +31,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = wxWebViewNameStr) - { - Create(parent, id, url, pos, size, style, name); - } + const wxString& name = wxWebViewNameStr); ~wxWebViewEdge(); diff --git a/src/msw/webview_edge.cpp b/src/msw/webview_edge.cpp index 0da43c229d..6ab2b9d1a8 100644 --- a/src/msw/webview_edge.cpp +++ b/src/msw/webview_edge.cpp @@ -476,6 +476,24 @@ ICoreWebView2Settings* wxWebViewEdgeImpl::GetSettings() return settings; } +wxWebViewEdge::wxWebViewEdge(): + m_impl(new wxWebViewEdgeImpl(this)) +{ + +} + +wxWebViewEdge::wxWebViewEdge(wxWindow* parent, + wxWindowID id, + const wxString& url, + const wxPoint& pos, + const wxSize& size, + long style, + const wxString& name): + m_impl(new wxWebViewEdgeImpl(this)) +{ + Create(parent, id, url, pos, size, style, name); +} + wxWebViewEdge::~wxWebViewEdge() { wxWindow* topLevelParent = wxGetTopLevelParent(this); @@ -501,7 +519,6 @@ bool wxWebViewEdge::Create(wxWindow* parent, return false; } - m_impl = new wxWebViewEdgeImpl(this); if (!m_impl->Create()) return false; Bind(wxEVT_SIZE, &wxWebViewEdge::OnSize, this); @@ -774,6 +791,8 @@ void wxWebViewEdge::MSWSetBrowserExecutableDir(const wxString & path) bool wxWebViewEdge::RunScriptSync(const wxString& javascript, wxString* output) const { bool scriptExecuted = false; + if (!m_impl->m_webView) + return false; // Start script execution HRESULT executionResult = m_impl->m_webView->ExecuteScript(javascript.wc_str(), Callback(