Merge branch 'gcc-edge'

Make it possible to build wxWebViewEdge with gcc or clang too.

Closes https://github.com/wxWidgets/wxWidgets/pull/2245
This commit is contained in:
Vadim Zeitlin
2021-03-01 00:09:52 +01:00
11 changed files with 194 additions and 20 deletions

View File

@@ -1690,15 +1690,16 @@ WEBVIEWDLL_CXXFLAGS = $(__webviewdll_PCH_INC) $(__INC_TIFF_BUILD_p) \
$(__INC_REGEX_p) $(__INC_EXPAT_p) $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \
$(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
$(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) -DWXBUILDING -DWXUSINGDLL \
-DWXMAKINGDLL_WEBVIEW $(__webview_additional_include_p) $(PIC_FLAG) \
$(WX_CXXFLAGS) $(CPPFLAGS) $(CXXFLAGS)
-DWXMAKINGDLL_WEBVIEW $(__webview_additional_include_wrl_p) \
$(__webview_additional_include_p) $(PIC_FLAG) $(WX_CXXFLAGS) $(CPPFLAGS) \
$(CXXFLAGS)
WEBVIEWDLL_OBJCXXFLAGS = $(__webviewdll_PCH_INC) $(__INC_TIFF_BUILD_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
$(__INC_REGEX_p) $(__INC_EXPAT_p) $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \
$(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
$(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) -DWXBUILDING -DWXUSINGDLL \
-DWXMAKINGDLL_WEBVIEW $(__webview_additional_include_p) $(PIC_FLAG) \
$(CPPFLAGS) $(OBJCXXFLAGS)
-DWXMAKINGDLL_WEBVIEW $(__webview_additional_include_wrl_p) \
$(__webview_additional_include_p) $(PIC_FLAG) $(CPPFLAGS) $(OBJCXXFLAGS)
WEBVIEWDLL_OBJECTS = \
$(__WEBVIEW_SRC_PLATFORM_OBJECTS_2) \
webviewdll_webview.o \
@@ -1711,13 +1712,15 @@ WEBVIEWLIB_CXXFLAGS = $(__webviewlib_PCH_INC) $(__INC_TIFF_BUILD_p) \
$(__INC_REGEX_p) $(__INC_EXPAT_p) $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \
$(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
$(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) -DWXBUILDING \
$(__webview_additional_include_p) $(WX_CXXFLAGS) $(CPPFLAGS) $(CXXFLAGS)
$(__webview_additional_include_wrl_p) $(__webview_additional_include_p) \
$(WX_CXXFLAGS) $(CPPFLAGS) $(CXXFLAGS)
WEBVIEWLIB_OBJCXXFLAGS = $(__webviewlib_PCH_INC) $(__INC_TIFF_BUILD_p) \
$(__INC_TIFF_p) $(__INC_JPEG_p) $(__INC_PNG_p) $(__INC_ZLIB_p) \
$(__INC_REGEX_p) $(__INC_EXPAT_p) $(WX_CPPFLAGS) -D__WX$(TOOLKIT)__ \
$(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) \
$(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) -DWXBUILDING \
$(__webview_additional_include_p) $(CPPFLAGS) $(OBJCXXFLAGS)
$(__webview_additional_include_wrl_p) $(__webview_additional_include_p) \
$(CPPFLAGS) $(OBJCXXFLAGS)
WEBVIEWLIB_OBJECTS = \
$(__WEBVIEW_SRC_PLATFORM_OBJECTS_3) \
webviewlib_webview.o \
@@ -12397,6 +12400,8 @@ COND_USE_SOVERSOLARIS_1___webviewdll___so_symlinks_uninst_cmd = rm -f \
@COND_TOOLKIT_GTK@ webviewdll_webview_webkit2.o
@COND_TOOLKIT_MSW@__WEBVIEW_SRC_PLATFORM_OBJECTS_2 = \
@COND_TOOLKIT_MSW@ webviewdll_webview_ie.o webviewdll_webview_edge.o
@COND_TOOLKIT_MSW@__webview_additional_include_wrl_p_1 = \
@COND_TOOLKIT_MSW@ --include-dir $(top_srcdir)/include/wx/msw/wrl
@COND_TOOLKIT_MSW@__webview_additional_include_p_1 = \
@COND_TOOLKIT_MSW@ --include-dir \
@COND_TOOLKIT_MSW@ $(top_srcdir)/3rdparty/webview2/build/native/include
@@ -13792,6 +13797,8 @@ COND_PLATFORM_MACOSX_1___OSX_LOWLEVEL_SRC_OBJECTS_1_4 = \
corelib_core_timer.o \
corelib_utilsexc_cf.o
@COND_PLATFORM_MACOSX_1@__OSX_LOWLEVEL_SRC_OBJECTS_1_4 = $(COND_PLATFORM_MACOSX_1___OSX_LOWLEVEL_SRC_OBJECTS_1_4)
@COND_TOOLKIT_MSW@__webview_additional_include_wrl_p = \
@COND_TOOLKIT_MSW@ -I$(top_srcdir)/include/wx/msw/wrl
@COND_TOOLKIT_MSW@__webview_additional_include_p = \
@COND_TOOLKIT_MSW@ -I$(top_srcdir)/3rdparty/webview2/build/native/include
@COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1@__htmldll_library_link_DEP \
@@ -36060,7 +36067,7 @@ webviewdll_webviewfshandler.o: $(srcdir)/src/common/webviewfshandler.cpp $(WEBVI
$(CXXC) -c -o $@ $(WEBVIEWDLL_CXXFLAGS) $(srcdir)/src/common/webviewfshandler.cpp
webviewdll_version_rc.o: $(srcdir)/src/msw/version.rc $(WEBVIEWDLL_ODEP)
$(WINDRES) -i$< -o$@ $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_67) $(__INC_REGEX_p_65) $(__INC_EXPAT_p_65) --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_67) $(__DEBUG_DEFINE_p_66) $(__EXCEPTIONS_DEFINE_p_65) $(__RTTI_DEFINE_p_65) $(__THREAD_DEFINE_p_65) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include --define WXUSINGDLL --define WXMAKINGDLL_WEBVIEW $(__webview_additional_include_p_1)
$(WINDRES) -i$< -o$@ $(__INC_TIFF_BUILD_p_54) $(__INC_TIFF_p_54) $(__INC_JPEG_p_54) $(__INC_PNG_p_53) $(__INC_ZLIB_p_67) $(__INC_REGEX_p_65) $(__INC_EXPAT_p_65) --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_67) $(__DEBUG_DEFINE_p_66) $(__EXCEPTIONS_DEFINE_p_65) $(__RTTI_DEFINE_p_65) $(__THREAD_DEFINE_p_65) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include --define WXUSINGDLL --define WXMAKINGDLL_WEBVIEW $(__webview_additional_include_wrl_p_1) $(__webview_additional_include_p_1)
webviewlib_webview_ie.o: $(srcdir)/src/msw/webview_ie.cpp $(WEBVIEWLIB_ODEP)
$(CXXC) -c -o $@ $(WEBVIEWLIB_CXXFLAGS) $(srcdir)/src/msw/webview_ie.cpp

View File

@@ -180,6 +180,14 @@
<if cond="TOOLKIT=='MSW'">$(TOP_SRCDIR)3rdparty/webview2/build/native/include</if>
</set>
<set var="webview_additional_include_wrl">
<if cond="TOOLKIT=='MSW' and IS_MSVC=='0'">$(TOP_SRCDIR)include/wx/msw/wrl</if>
</set>
<set var="webview_edge_pragma_warning">
<if cond="TOOLKIT=='MSW' and IS_MSVC=='0'">-Wno-unknown-pragmas</if>
</set>
<dll id="webviewdll" template="wx_dll"
cond="SHARED=='1' and USE_GUI=='1' and USE_WEBVIEW=='1' and MONOLITHIC=='0'">
<define>WXUSINGDLL</define>
@@ -189,14 +197,18 @@
<library>basedll</library>
<ldlibs>$(EXTRALIBS_WEBVIEW)</ldlibs>
<msvc-headers>$(WEBVIEW_HDR)</msvc-headers>
<include>$(webview_additional_include_wrl)</include>
<include>$(webview_additional_include)</include>
<cxxflags-mingw>$(webview_edge_pragma_warning)</cxxflags-mingw>
</dll>
<lib id="webviewlib" template="wx_lib"
cond="SHARED=='0' and USE_GUI=='1' and USE_WEBVIEW=='1' and MONOLITHIC=='0'">
<sources>$(WEBVIEW_SRC)</sources>
<msvc-headers>$(WEBVIEW_HDR)</msvc-headers>
<include>$(webview_additional_include_wrl)</include>
<include>$(webview_additional_include)</include>
<cxxflags-mingw>$(webview_edge_pragma_warning)</cxxflags-mingw>
</lib>
<wxshortcut id="wxwebview" cond="MONOLITHIC=='0' and USE_WEBVIEW=='1'"/>

View File

@@ -67,6 +67,10 @@ elseif(WXMSW)
endif()
wx_lib_include_directories(wxwebview PRIVATE "${WEBVIEW2_PACKAGE_DIR}/build/native/include")
if(NOT MSVC)
wx_lib_include_directories(wxwebview PRIVATE "${wxSOURCE_DIR}/include/wx/msw/wrl")
target_compile_options(wxwebview PRIVATE -Wno-unknown-pragmas)
endif()
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
set(WEBVIEW2_ARCH x86)

View File

@@ -1140,8 +1140,9 @@ WEBVIEWDLL_CXXFLAGS = -I..\..\src\tiff\libtiff -I..\..\src\jpeg \
$(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) -I$(SETUPHDIR) -I..\..\include \
$(____CAIRO_INCLUDEDIR_FILENAMES) -W -Wall -DWXBUILDING -DWXUSINGDLL \
-DWXMAKINGDLL_WEBVIEW -I..\..\3rdparty\webview2\build\native\include \
$(__RTTIFLAG) $(__EXCEPTIONSFLAG) -Wno-ctor-dtor-privacy $(CPPFLAGS) \
-DWXMAKINGDLL_WEBVIEW -I..\..\include\wx\msw\wrl \
-I..\..\3rdparty\webview2\build\native\include $(__RTTIFLAG) \
$(__EXCEPTIONSFLAG) -Wno-ctor-dtor-privacy -Wno-unknown-pragmas $(CPPFLAGS) \
$(CXXFLAGS)
WEBVIEWDLL_OBJECTS = \
$(OBJS)\webviewdll_dummy.o \
@@ -1158,8 +1159,9 @@ WEBVIEWLIB_CXXFLAGS = -I..\..\src\tiff\libtiff -I..\..\src\jpeg \
$(__NDEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
$(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) -I$(SETUPHDIR) -I..\..\include \
$(____CAIRO_INCLUDEDIR_FILENAMES) -W -Wall -DWXBUILDING \
-I..\..\3rdparty\webview2\build\native\include $(__RTTIFLAG) \
$(__EXCEPTIONSFLAG) -Wno-ctor-dtor-privacy $(CPPFLAGS) $(CXXFLAGS)
-I..\..\include\wx\msw\wrl -I..\..\3rdparty\webview2\build\native\include \
$(__RTTIFLAG) $(__EXCEPTIONSFLAG) -Wno-ctor-dtor-privacy \
-Wno-unknown-pragmas $(CPPFLAGS) $(CXXFLAGS)
WEBVIEWLIB_OBJECTS = \
$(OBJS)\webviewlib_dummy.o \
$(OBJS)\webviewlib_webview_ie.o \
@@ -16404,7 +16406,7 @@ $(OBJS)\webviewdll_webviewfshandler.o: ../../src/common/webviewfshandler.cpp
$(CXX) -c -o $@ $(WEBVIEWDLL_CXXFLAGS) $(CPPDEPS) $<
$(OBJS)\webviewdll_version_rc.o: ../../src/msw/version.rc
$(WINDRES) -i$< -o$@ --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/expat/lib --define __WXMSW__ $(__WXUNIV_DEFINE_p_67) $(__DEBUG_DEFINE_p_66) $(__NDEBUG_DEFINE_p_65) $(__EXCEPTIONS_DEFINE_p_65) $(__RTTI_DEFINE_p_65) $(__THREAD_DEFINE_p_65) $(__UNICODE_DEFINE_p_67) --include-dir $(SETUPHDIR) --include-dir ../../include $(__CAIRO_INCLUDEDIR_p) --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview$(WXCOMPILER)$(VENDORTAG) --define WXUSINGDLL --define WXMAKINGDLL_WEBVIEW --include-dir ../../3rdparty/webview2/build/native/include
$(WINDRES) -i$< -o$@ --include-dir ../../src/tiff/libtiff --include-dir ../../src/jpeg --include-dir ../../src/png --include-dir ../../src/zlib --include-dir ../../src/regex --include-dir ../../src/expat/expat/lib --define __WXMSW__ $(__WXUNIV_DEFINE_p_67) $(__DEBUG_DEFINE_p_66) $(__NDEBUG_DEFINE_p_65) $(__EXCEPTIONS_DEFINE_p_65) $(__RTTI_DEFINE_p_65) $(__THREAD_DEFINE_p_65) $(__UNICODE_DEFINE_p_67) --include-dir $(SETUPHDIR) --include-dir ../../include $(__CAIRO_INCLUDEDIR_p) --define WXBUILDING --define WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview$(WXCOMPILER)$(VENDORTAG) --define WXUSINGDLL --define WXMAKINGDLL_WEBVIEW --include-dir ../../include/wx/msw/wrl --include-dir ../../3rdparty/webview2/build/native/include
$(OBJS)\webviewlib_dummy.o: ../../src/common/dummy.cpp
$(CXX) -c -o $@ $(WEBVIEWLIB_CXXFLAGS) $(CPPDEPS) $<

View File

@@ -100,6 +100,11 @@ public:
return m_ptr;
}
T* Get() const
{
return m_ptr;
}
bool operator<(T* ptr) const
{
return get() < ptr;

View File

@@ -13,12 +13,29 @@
#include "wx/dynlib.h"
#include "wx/msw/private/comptr.h"
#include <Webview2.h>
#include <WebView2.h>
#ifndef __ICoreWebView2Environment_INTERFACE_DEFINED__
#error "WebView2 SDK version 0.9.430 or newer is required"
#endif
#ifndef __VISUALC__
__CRT_UUID_DECL(ICoreWebView2AddScriptToExecuteOnDocumentCreatedCompletedHandler, 0xb99369f3, 0x9b11, 0x47b5, 0xbc,0x6f, 0x8e,0x78,0x95,0xfc,0xea,0x17);
__CRT_UUID_DECL(ICoreWebView2CreateCoreWebView2ControllerCompletedHandler, 0x6c4819f3, 0xc9b7, 0x4260, 0x81,0x27, 0xc9,0xf5,0xbd,0xe7,0xf6,0x8c);
__CRT_UUID_DECL(ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler, 0x4e8a3389, 0xc9d8, 0x4bd2, 0xb6,0xb5, 0x12,0x4f,0xee,0x6c,0xc1,0x4d);
__CRT_UUID_DECL(ICoreWebView2ContainsFullScreenElementChangedEventHandler, 0xe45d98b1, 0xafef, 0x45be, 0x8b,0xaf, 0x6c,0x77,0x28,0x86,0x7f,0x73);
__CRT_UUID_DECL(ICoreWebView2ContentLoadingEventHandler, 0x364471e7, 0xf2be, 0x4910, 0xbd,0xba, 0xd7,0x20,0x77,0xd5,0x1c,0x4b);
__CRT_UUID_DECL(ICoreWebView2DocumentTitleChangedEventHandler, 0xf5f2b923, 0x953e, 0x4042, 0x9f,0x95, 0xf3,0xa1,0x18,0xe1,0xaf,0xd4);
__CRT_UUID_DECL(ICoreWebView2Environment, 0xb96d755e, 0x0319, 0x4e92, 0xa2,0x96, 0x23,0x43,0x6f,0x46,0xa1,0xfc);
__CRT_UUID_DECL(ICoreWebView2EnvironmentOptions, 0x2fde08a8, 0x1e9a, 0x4766, 0x8c,0x05, 0x95,0xa9,0xce,0xb9,0xd1,0xc5);
__CRT_UUID_DECL(ICoreWebView2ExecuteScriptCompletedHandler, 0x49511172, 0xcc67, 0x4bca, 0x99,0x23, 0x13,0x71,0x12,0xf4,0xc4,0xcc);
__CRT_UUID_DECL(ICoreWebView2NavigationCompletedEventHandler, 0xd33a35bf, 0x1c49, 0x4f98, 0x93,0xab, 0x00,0x6e,0x05,0x33,0xfe,0x1c);
__CRT_UUID_DECL(ICoreWebView2NavigationStartingEventHandler, 0x9adbe429, 0xf36d, 0x432b, 0x9d,0xdc, 0xf8,0x88,0x1f,0xbd,0x76,0xe3);
__CRT_UUID_DECL(ICoreWebView2NewWindowRequestedEventHandler, 0xd4c185fe, 0xc81c, 0x4989, 0x97,0xaf, 0x2d,0x3f,0xa7,0xab,0x56,0x51);
__CRT_UUID_DECL(ICoreWebView2SourceChangedEventHandler, 0x3c067f9f, 0x5388, 0x4772, 0x8b,0x48, 0x79,0xf7,0xef,0x1a,0xb3,0x7c);
__CRT_UUID_DECL(ICoreWebView2WebMessageReceivedEventHandler, 0x57213f19, 0x00e6, 0x49fa, 0x8e,0x07, 0x89,0x8e,0xa0,0x1e,0xcb,0xd2);
#endif
class wxWebViewEdgeImpl
{
public:

View File

@@ -0,0 +1,21 @@
///////////////////////////////////////////////////////////////////////////////
// Name: wx/msw/wrl/EventToken.h
// Purpose: WRL EventRegistrationToken implementation
// Author: Maarten Bent
// Created: 2021-02-26
// Copyright: (c) 2021 wxWidgets team
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// Note: this include guard uses the same name as winrt/EventToken.h in the
// Windows SDK to prevent a struct type redefinition when both headers are
// included.
#ifndef __eventtoken_h__
#define __eventtoken_h__
typedef struct EventRegistrationToken
{
__int64 value;
} EventRegistrationToken;
#endif // __eventtoken_h__

104
include/wx/msw/wrl/event.h Normal file
View File

@@ -0,0 +1,104 @@
///////////////////////////////////////////////////////////////////////////////
// Name: wx/msw/wrl/event.h
// Purpose: WRL event callback implementation
// Author: nns52k
// Created: 2021-02-25
// Copyright: (c) 2021 wxWidgets team
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_MSW_PRIVATE_WRL_H_
#define _WX_MSW_PRIVATE_WRL_H_
#include <atomic>
template <typename baseT, typename ...argTs>
class CInvokable : public baseT
{
public:
CInvokable() : m_nRefCount(0) {}
virtual ~CInvokable() {}
// IUnknown methods
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObj) override
{
if (riid == __uuidof(baseT) || riid == IID_IUnknown)
{
*ppvObj = this;
AddRef();
return S_OK;
}
*ppvObj = NULL;
return E_NOINTERFACE;
}
ULONG STDMETHODCALLTYPE AddRef() override
{
return ++m_nRefCount;
}
ULONG STDMETHODCALLTYPE Release() override
{
size_t ret = --m_nRefCount;
if (ret == 0)
delete this;
return ret;
}
private:
std::atomic<size_t> m_nRefCount;
};
template <typename baseT, typename ...argTs>
class CInvokableLambda : public CInvokable<baseT, argTs...>
{
public:
CInvokableLambda(std::function<HRESULT(argTs...)> lambda)
: m_lambda(lambda)
{}
// baseT method
HRESULT STDMETHODCALLTYPE Invoke(argTs ...args) override
{
return m_lambda(args...);
}
private:
std::function<HRESULT(argTs...)> m_lambda;
};
template <typename baseT, typename contextT, typename ...argTs>
class CInvokableMethod : public CInvokable<baseT, argTs...>
{
public:
CInvokableMethod(contextT* ctx, HRESULT(contextT::* mthd)(argTs...))
: m_ctx(ctx), m_mthd(mthd)
{}
// baseT method
HRESULT STDMETHODCALLTYPE Invoke(argTs ...args) override
{
return (m_ctx->*m_mthd)(args...);
}
private:
contextT* m_ctx;
HRESULT(contextT::* m_mthd)(argTs...);
};
// the function templates to generate concrete classes from above class templates
template <
typename baseT, typename lambdaT, // base type & lambda type
typename LT, typename ...argTs // for capturing argument types of lambda
>
wxCOMPtr<baseT> Callback_impl(lambdaT&& lambda, HRESULT(LT::*)(argTs...) const)
{
return wxCOMPtr<baseT>(new CInvokableLambda<baseT, argTs...>(lambda));
}
template <typename baseT, typename lambdaT>
wxCOMPtr<baseT> Callback(lambdaT&& lambda)
{
return Callback_impl<baseT>(std::move(lambda), &lambdaT::operator());
}
template <typename baseT, typename contextT, typename ...argTs>
wxCOMPtr<baseT> Callback(contextT* ctx, HRESULT(contextT::* mthd)(argTs...))
{
return wxCOMPtr<baseT>(new CInvokableMethod<baseT, contextT, argTs...>(ctx, mthd));
}
#endif // _WX_MSW_PRIVATE_WRL_H_

View File

@@ -320,7 +320,7 @@ public:
virtual filesystems, custom urls.
This backend is not enabled by default, to build it follow these steps:
- Visual Studio 2015, or newer, is required
- Visual Studio 2015 or newer, or GCC/Clang with c++11 is required
- With CMake just enable @c wxUSE_WEBVIEW_EDGE
- When not using CMake:
- Download the <a href="https://aka.ms/webviewnuget">WebView2 SDK</a>

View File

@@ -26,10 +26,12 @@
#include "wx/msw/private/cotaskmemptr.h"
#include "wx/msw/private/webview_edge.h"
#ifdef __VISUALC__
#include <wrl/event.h>
#include <Objbase.h>
using namespace Microsoft::WRL;
#else
#include <wx/msw/wrl/event.h>
#endif // !__VISUALC__
wxIMPLEMENT_DYNAMIC_CLASS(wxWebViewEdge, wxWebView);
@@ -241,8 +243,8 @@ HRESULT wxWebViewEdgeImpl::OnNavigationCompleted(ICoreWebView2* WXUNUSED(sender)
}
else
{
if (m_historyEnabled && !m_historyLoadingFromList &&
(uri == m_ctrl->GetCurrentURL()) ||
if ((m_historyEnabled && !m_historyLoadingFromList &&
(uri == m_ctrl->GetCurrentURL())) ||
(m_ctrl->GetCurrentURL().substr(0, 4) == "file" &&
wxFileName::URLToFileName(m_ctrl->GetCurrentURL()).GetFullPath() == uri))
{
@@ -772,7 +774,7 @@ bool wxWebViewEdge::RunScript(const wxString& javascript, wxString* output) cons
return true;
}
void wxWebViewEdge::RegisterHandler(wxSharedPtr<wxWebViewHandler> handler)
void wxWebViewEdge::RegisterHandler(wxSharedPtr<wxWebViewHandler> WXUNUSED(handler))
{
// TODO: could maybe be implemented via IWebView2WebView5::add_WebResourceRequested
wxLogDebug("Registering handlers is not supported");