Commit af1c1484 authored by Piotr Caban's avatar Piotr Caban Committed by Alexandre Julliard

oleview: Skip IDispatch functions in dual interfaces properly.

parent e314ef69
......@@ -512,12 +512,17 @@ static int EnumFuncs(ITypeInfo *pTypeInfo, TYPEATTR *pTypeAttr, HTREEITEM hParen
cFuncs = pTypeAttr->cFuncs;
for(i=0; i<cFuncs; i++)
i = 0;
if(pTypeAttr->wTypeFlags & TYPEFLAG_FDUAL) { /* skip 7 members of IDispatch */
cFuncs += 7;
i += 7;
}
for(; i<cFuncs; i++)
{
TYPELIB_DATA *tld;
if(FAILED(ITypeInfo_GetFuncDesc(pTypeInfo, i, &pFuncDesc))) continue;
if(pTypeAttr->wTypeFlags & TYPEFLAG_FDUAL && pFuncDesc->memid >= MIN_FUNC_ID) continue;
if(FAILED(ITypeInfo_GetDocumentation(pTypeInfo, pFuncDesc->memid, &bstrName,
&bstrHelpString, NULL, NULL))) continue;
......@@ -529,7 +534,7 @@ static int EnumFuncs(ITypeInfo *pTypeInfo, TYPEATTR *pTypeAttr, HTREEITEM hParen
U(tvis).item.pszText = bstrName;
U(tvis).item.lParam = (LPARAM) tld;
bFirst = TRUE;
if(pFuncDesc->memid < MIN_FUNC_ID)
if(pFuncDesc->memid < MIN_FUNC_ID || pTypeAttr->wTypeFlags & TYPEFLAG_FDUAL)
{
AddToTLDataStrW(tld, wszOpenBrackets1);
bFirst = FALSE;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment