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:
21
Makefile.in
21
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
|
||||
|
@@ -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'"/>
|
||||
|
@@ -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)
|
||||
|
@@ -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) $<
|
||||
|
@@ -100,6 +100,11 @@ public:
|
||||
return m_ptr;
|
||||
}
|
||||
|
||||
T* Get() const
|
||||
{
|
||||
return m_ptr;
|
||||
}
|
||||
|
||||
bool operator<(T* ptr) const
|
||||
{
|
||||
return get() < ptr;
|
||||
|
@@ -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:
|
||||
|
21
include/wx/msw/wrl/EventToken.h
Normal file
21
include/wx/msw/wrl/EventToken.h
Normal 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
104
include/wx/msw/wrl/event.h
Normal 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_
|
@@ -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>
|
||||
|
@@ -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");
|
||||
|
Reference in New Issue
Block a user