Piotr Caban : oleview: Skip IDispatch functions in dual interfaces properly .

Alexandre Julliard julliard at winehq.org
Fri Apr 11 06:28:20 CDT 2008


Module: wine
Branch: master
Commit: af1c1484d71fd560520046efa441c23bf80093f1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=af1c1484d71fd560520046efa441c23bf80093f1

Author: Piotr Caban <piotr.caban at gmail.com>
Date:   Fri Apr 11 01:10:07 2008 +0200

oleview: Skip IDispatch functions in dual interfaces properly.

---

 programs/oleview/typelib.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/programs/oleview/typelib.c b/programs/oleview/typelib.c
index 217ce7d..922fa11 100644
--- a/programs/oleview/typelib.c
+++ b/programs/oleview/typelib.c
@@ -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;




More information about the wine-cvs mailing list