diff --git a/Makefile.in b/Makefile.in
index b9c14d553a..482cf73d26 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -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
diff --git a/build/bakefiles/multilib.bkl b/build/bakefiles/multilib.bkl
index 2dbd123173..90ca606d72 100644
--- a/build/bakefiles/multilib.bkl
+++ b/build/bakefiles/multilib.bkl
@@ -180,6 +180,14 @@
$(TOP_SRCDIR)3rdparty/webview2/build/native/include
+
+ $(TOP_SRCDIR)include/wx/msw/wrl
+
+
+
+ -Wno-unknown-pragmas
+
+
WXUSINGDLL
@@ -189,14 +197,18 @@
basedll
$(EXTRALIBS_WEBVIEW)
$(WEBVIEW_HDR)
+ $(webview_additional_include_wrl)
$(webview_additional_include)
+ $(webview_edge_pragma_warning)
$(WEBVIEW_SRC)
$(WEBVIEW_HDR)
+ $(webview_additional_include_wrl)
$(webview_additional_include)
+ $(webview_edge_pragma_warning)
diff --git a/build/cmake/lib/webview/CMakeLists.txt b/build/cmake/lib/webview/CMakeLists.txt
index 56ab76375d..e2ddeb44fb 100644
--- a/build/cmake/lib/webview/CMakeLists.txt
+++ b/build/cmake/lib/webview/CMakeLists.txt
@@ -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)
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index 42f5adc99c..6ff7d9af53 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -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) $<
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index 536ca5edfc..792479410b 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -16854,7 +16854,7 @@ $(OBJS)\webviewdll_webviewfshandler.obj: ..\..\src\common\webviewfshandler.cpp
$(CXX) /c /nologo /TP /Fo$@ $(WEBVIEWDLL_CXXFLAGS) ..\..\src\common\webviewfshandler.cpp
$(OBJS)\webviewdll_version.res: ..\..\src\msw\version.rc
- rc /fo$@ /d WIN32 /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\expat\lib $(____DEBUGRUNTIME_6) /d _CRT_SECURE_NO_DEPRECATE=1 /d _CRT_NON_CONFORMING_SWPRINTFS=1 /d _SCL_SECURE_NO_WARNINGS=1 $(__NO_VC_CRTDBG_p_72) $(__TARGET_CPU_COMPFLAG_p_72) /d __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) /i $(SETUPHDIR) /i ..\..\include $(____CAIRO_INCLUDEDIR_FILENAMES_4) /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview$(WXCOMPILER)$(VENDORTAG) /d WXUSINGDLL /d WXMAKINGDLL_WEBVIEW /i ..\..\3rdparty\webview2\build\native\include ..\..\src\msw\version.rc
+ rc /fo$@ /d WIN32 /i ..\..\src\tiff\libtiff /i ..\..\src\jpeg /i ..\..\src\png /i ..\..\src\zlib /i ..\..\src\regex /i ..\..\src\expat\expat\lib $(____DEBUGRUNTIME_6) /d _CRT_SECURE_NO_DEPRECATE=1 /d _CRT_NON_CONFORMING_SWPRINTFS=1 /d _SCL_SECURE_NO_WARNINGS=1 $(__NO_VC_CRTDBG_p_72) $(__TARGET_CPU_COMPFLAG_p_72) /d __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) /i $(SETUPHDIR) /i ..\..\include $(____CAIRO_INCLUDEDIR_FILENAMES_4) /d WXBUILDING /d WXDLLNAME=wx$(PORTNAME)$(WXUNIVNAME)$(WX_VERSION_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_webview$(WXCOMPILER)$(VENDORTAG) /d WXUSINGDLL /d WXMAKINGDLL_WEBVIEW /i ..\..\3rdparty\webview2\build\native\include ..\..\src\msw\version.rc
$(OBJS)\webviewlib_dummy.obj: ..\..\src\common\dummy.cpp
$(CXX) /c /nologo /TP /Fo$@ $(WEBVIEWLIB_CXXFLAGS) /Ycwx/wxprec.h ..\..\src\common\dummy.cpp
diff --git a/include/wx/msw/private/comptr.h b/include/wx/msw/private/comptr.h
index 2b21cfa82e..db8c9bcf95 100644
--- a/include/wx/msw/private/comptr.h
+++ b/include/wx/msw/private/comptr.h
@@ -100,6 +100,11 @@ public:
return m_ptr;
}
+ T* Get() const
+ {
+ return m_ptr;
+ }
+
bool operator<(T* ptr) const
{
return get() < ptr;
diff --git a/include/wx/msw/private/webview_edge.h b/include/wx/msw/private/webview_edge.h
index f78d984395..cf774f8c86 100644
--- a/include/wx/msw/private/webview_edge.h
+++ b/include/wx/msw/private/webview_edge.h
@@ -13,12 +13,29 @@
#include "wx/dynlib.h"
#include "wx/msw/private/comptr.h"
-#include
+#include
#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:
diff --git a/include/wx/msw/wrl/EventToken.h b/include/wx/msw/wrl/EventToken.h
new file mode 100644
index 0000000000..8d178baa5a
--- /dev/null
+++ b/include/wx/msw/wrl/EventToken.h
@@ -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__
diff --git a/include/wx/msw/wrl/event.h b/include/wx/msw/wrl/event.h
new file mode 100644
index 0000000000..71a2d86770
--- /dev/null
+++ b/include/wx/msw/wrl/event.h
@@ -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
+
+template
+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 m_nRefCount;
+};
+
+template
+class CInvokableLambda : public CInvokable
+{
+public:
+ CInvokableLambda(std::function lambda)
+ : m_lambda(lambda)
+ {}
+ // baseT method
+ HRESULT STDMETHODCALLTYPE Invoke(argTs ...args) override
+ {
+ return m_lambda(args...);
+ }
+private:
+ std::function m_lambda;
+};
+
+template
+class CInvokableMethod : public CInvokable
+{
+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 Callback_impl(lambdaT&& lambda, HRESULT(LT::*)(argTs...) const)
+{
+ return wxCOMPtr(new CInvokableLambda(lambda));
+}
+
+template
+wxCOMPtr Callback(lambdaT&& lambda)
+{
+ return Callback_impl(std::move(lambda), &lambdaT::operator());
+}
+
+template
+wxCOMPtr Callback(contextT* ctx, HRESULT(contextT::* mthd)(argTs...))
+{
+ return wxCOMPtr(new CInvokableMethod(ctx, mthd));
+}
+
+#endif // _WX_MSW_PRIVATE_WRL_H_
diff --git a/interface/wx/webview.h b/interface/wx/webview.h
index 18581d2c9a..1df97b3d1a 100644
--- a/interface/wx/webview.h
+++ b/interface/wx/webview.h
@@ -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 WebView2 SDK
diff --git a/src/msw/webview_edge.cpp b/src/msw/webview_edge.cpp
index 355d384e31..7069536d72 100644
--- a/src/msw/webview_edge.cpp
+++ b/src/msw/webview_edge.cpp
@@ -26,10 +26,12 @@
#include "wx/msw/private/cotaskmemptr.h"
#include "wx/msw/private/webview_edge.h"
+#ifdef __VISUALC__
#include
-#include
-
using namespace Microsoft::WRL;
+#else
+#include
+#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 handler)
+void wxWebViewEdge::RegisterHandler(wxSharedPtr WXUNUSED(handler))
{
// TODO: could maybe be implemented via IWebView2WebView5::add_WebResourceRequested
wxLogDebug("Registering handlers is not supported");