[PATCH] mshtml.idl: Work around IDisplayServices and IHTMLWindow7 conflict for getComputedStyle.
Generated typelib will use one name entry for both interface (although they differ in 'g' case). Make sure the right variant is used. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> --- include/mshtml.idl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
Jacek Caban <jacek(a)codeweavers.com> wrote:
--- a/include/mshtml.idl +++ b/include/mshtml.idl @@ -28142,7 +28142,9 @@ interface IDisplayServices : IUnknown HRESULT TransformRect([in, out] RECT *pRect,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement); HRESULT TransformPoint([in, out] POINT *pPoint,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement); HRESULT GetCaret([out] IHTMLCaret **ppCaret); - HRESULT GetComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle); + /* NOTE: We should use GetComputedStyle name instead, but due to the way typelibs are generated, + * it may conflict with lowercase getComputedStyle used by IHTMLWindow7 */ + HRESULT getComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle);
Are you sure that this is correct workaround? I checked Windows version of mshtml.tlb and it has "GetComputedStyle". -- Dmitry.
Dmitry Timoshkov <dmitry(a)baikal.ru> wrote:
Jacek Caban <jacek(a)codeweavers.com> wrote:
--- a/include/mshtml.idl +++ b/include/mshtml.idl @@ -28142,7 +28142,9 @@ interface IDisplayServices : IUnknown HRESULT TransformRect([in, out] RECT *pRect,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement); HRESULT TransformPoint([in, out] POINT *pPoint,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement); HRESULT GetCaret([out] IHTMLCaret **ppCaret); - HRESULT GetComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle); + /* NOTE: We should use GetComputedStyle name instead, but due to the way typelibs are generated, + * it may conflict with lowercase getComputedStyle used by IHTMLWindow7 */ + HRESULT getComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle);
Are you sure that this is correct workaround? I checked Windows version of mshtml.tlb and it has "GetComputedStyle".
That was an XP version of mshtml.tlb without IHTMLWindow7 interface, Windows7+ version of mshtml.tlb does indeed contain "getComputedStyle" instead. Perhaps just do what PSDK does in that case: place IHTMLWindow7 declaration before IDisplayServices (with an appropriate comment)? -- Dmitry.
On 6/3/19 5:39 PM, Dmitry Timoshkov wrote:
Dmitry Timoshkov <dmitry(a)baikal.ru> wrote:
Jacek Caban <jacek(a)codeweavers.com> wrote:
--- a/include/mshtml.idl +++ b/include/mshtml.idl @@ -28142,7 +28142,9 @@ interface IDisplayServices : IUnknown HRESULT TransformRect([in, out] RECT *pRect,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement); HRESULT TransformPoint([in, out] POINT *pPoint,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement); HRESULT GetCaret([out] IHTMLCaret **ppCaret); - HRESULT GetComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle); + /* NOTE: We should use GetComputedStyle name instead, but due to the way typelibs are generated, + * it may conflict with lowercase getComputedStyle used by IHTMLWindow7 */ + HRESULT getComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle); Are you sure that this is correct workaround? I checked Windows version of mshtml.tlb and it has "GetComputedStyle". That was an XP version of mshtml.tlb without IHTMLWindow7 interface, Windows7+ version of mshtml.tlb does indeed contain "getComputedStyle" instead. Perhaps just do what PSDK does in that case: place IHTMLWindow7 declaration before IDisplayServices (with an appropriate comment)?
We already do that and it's apparently not enough. Jacek
Jacek Caban <jacek(a)codeweavers.com> wrote:
On 6/3/19 5:39 PM, Dmitry Timoshkov wrote:
Dmitry Timoshkov <dmitry(a)baikal.ru> wrote:
Jacek Caban <jacek(a)codeweavers.com> wrote:
--- a/include/mshtml.idl +++ b/include/mshtml.idl @@ -28142,7 +28142,9 @@ interface IDisplayServices : IUnknown HRESULT TransformRect([in, out] RECT *pRect,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement); HRESULT TransformPoint([in, out] POINT *pPoint,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement); HRESULT GetCaret([out] IHTMLCaret **ppCaret); - HRESULT GetComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle); + /* NOTE: We should use GetComputedStyle name instead, but due to the way typelibs are generated, + * it may conflict with lowercase getComputedStyle used by IHTMLWindow7 */ + HRESULT getComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle); Are you sure that this is correct workaround? I checked Windows version of mshtml.tlb and it has "GetComputedStyle". That was an XP version of mshtml.tlb without IHTMLWindow7 interface, Windows7+ version of mshtml.tlb does indeed contain "getComputedStyle" instead. Perhaps just do what PSDK does in that case: place IHTMLWindow7 declaration before IDisplayServices (with an appropriate comment)?
We already do that and it's apparently not enough.
Attached patch does the trick. -- Dmitry.
On 6/3/19 5:55 PM, Dmitry Timoshkov wrote:
Jacek Caban <jacek(a)codeweavers.com> wrote:
On 6/3/19 5:39 PM, Dmitry Timoshkov wrote:
Dmitry Timoshkov <dmitry(a)baikal.ru> wrote:
Jacek Caban <jacek(a)codeweavers.com> wrote:
--- a/include/mshtml.idl +++ b/include/mshtml.idl @@ -28142,7 +28142,9 @@ interface IDisplayServices : IUnknown HRESULT TransformRect([in, out] RECT *pRect,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement); HRESULT TransformPoint([in, out] POINT *pPoint,[in] COORD_SYSTEM eSource,[in] COORD_SYSTEM eDestination,[in] IHTMLElement *pIElement); HRESULT GetCaret([out] IHTMLCaret **ppCaret); - HRESULT GetComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle); + /* NOTE: We should use GetComputedStyle name instead, but due to the way typelibs are generated, + * it may conflict with lowercase getComputedStyle used by IHTMLWindow7 */ + HRESULT getComputedStyle([in] IMarkupPointer *pPointer,[out] IHTMLComputedStyle **ppComputedStyle); Are you sure that this is correct workaround? I checked Windows version of mshtml.tlb and it has "GetComputedStyle". That was an XP version of mshtml.tlb without IHTMLWindow7 interface, Windows7+ version of mshtml.tlb does indeed contain "getComputedStyle" instead. Perhaps just do what PSDK does in that case: place IHTMLWindow7 declaration before IDisplayServices (with an appropriate comment)?
We already do that and it's apparently not enough. Attached patch does the trick.
Oh, I forgot about forward declarations. Sure, looks good to me. Thanks, Jacek
participants (2)
-
Dmitry Timoshkov -
Jacek Caban