Module: wine Branch: master Commit: deeb14e0ee39087a4f629cf332d586b44559427c URL: http://source.winehq.org/git/wine.git/?a=commit;h=deeb14e0ee39087a4f629cf332...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Nov 2 10:26:26 2012 +0100
explorerframe: Moved TaskbarList implementation to explorerframe.
---
dlls/explorerframe/Makefile.in | 3 ++- dlls/explorerframe/explorerframe.idl | 7 +++++++ dlls/explorerframe/explorerframe_main.c | 4 ++++ dlls/explorerframe/explorerframe_main.h | 13 +++++++++++++ dlls/{ieframe => explorerframe}/taskbarlist.c | 10 +++++----- dlls/ieframe/Makefile.in | 1 - dlls/ieframe/ieframe.h | 1 - dlls/ieframe/ieframe_main.c | 17 ----------------- dlls/ieframe/ieframe_v1.idl | 6 ------ 9 files changed, 31 insertions(+), 31 deletions(-)
diff --git a/dlls/explorerframe/Makefile.in b/dlls/explorerframe/Makefile.in index 975f197..dcb2826 100644 --- a/dlls/explorerframe/Makefile.in +++ b/dlls/explorerframe/Makefile.in @@ -4,7 +4,8 @@ IMPORTS = uuid ole32 shell32 user32
C_SRCS = \ explorerframe_main.c \ - nstc.c + nstc.c \ + taskbarlist.c
IDL_R_SRCS = explorerframe.idl
diff --git a/dlls/explorerframe/explorerframe.idl b/dlls/explorerframe/explorerframe.idl index 8171396..f7d6ece 100644 --- a/dlls/explorerframe/explorerframe.idl +++ b/dlls/explorerframe/explorerframe.idl @@ -24,3 +24,10 @@ uuid(ae054212-3535-4430-83ed-d501aa6680e6) ] coclass NamespaceTreeControl { interface INameSpaceTreeControl2; } + +[ + helpstring("Task Bar Communication"), + threading(apartment), + uuid(56fdf344-fd6d-11d0-958a-006097c9a090) +] +coclass TaskbarList { interface ITaskbarList; } diff --git a/dlls/explorerframe/explorerframe_main.c b/dlls/explorerframe/explorerframe_main.c index e26082f..bdb77a1 100644 --- a/dlls/explorerframe/explorerframe_main.c +++ b/dlls/explorerframe/explorerframe_main.c @@ -199,12 +199,16 @@ static const IClassFactoryVtbl EFCF_Vtbl = HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv) { static IClassFactoryImpl NSTCClassFactory = {{&EFCF_Vtbl}, NamespaceTreeControl_Constructor}; + static IClassFactoryImpl TaskbarListFactory = {{&EFCF_Vtbl}, TaskbarList_Constructor};
TRACE("%s, %s, %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
if(IsEqualGUID(&CLSID_NamespaceTreeControl, rclsid)) return IClassFactory_QueryInterface(&NSTCClassFactory.IClassFactory_iface, riid, ppv);
+ if(IsEqualGUID(&CLSID_TaskbarList, rclsid)) + return IClassFactory_QueryInterface(&TaskbarListFactory.IClassFactory_iface, riid, ppv); + return CLASS_E_CLASSNOTAVAILABLE; }
diff --git a/dlls/explorerframe/explorerframe_main.h b/dlls/explorerframe/explorerframe_main.h index 7fc2b45..44e7253 100644 --- a/dlls/explorerframe/explorerframe_main.h +++ b/dlls/explorerframe/explorerframe_main.h @@ -21,6 +21,8 @@ #ifndef __WINE_EXPLORERFRAME_H #define __WINE_EXPLORERFRAME_H
+#define COBJMACROS + #include "shlobj.h"
/* Not declared in commctrl.h ("for internal use (msdn)") */ @@ -33,5 +35,16 @@ static inline void EFRAME_LockModule(void) { InterlockedIncrement( &EFRAME_refCo static inline void EFRAME_UnlockModule(void) { InterlockedDecrement( &EFRAME_refCount ); }
HRESULT NamespaceTreeControl_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv) DECLSPEC_HIDDEN; +HRESULT TaskbarList_Constructor(IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; + +static inline void *heap_alloc(size_t len) +{ + return HeapAlloc(GetProcessHeap(), 0, len); +} + +static inline BOOL heap_free(void *mem) +{ + return HeapFree(GetProcessHeap(), 0, mem); +}
#endif /* __WINE_EXPLORERFRAME_H */ diff --git a/dlls/ieframe/taskbarlist.c b/dlls/explorerframe/taskbarlist.c similarity index 97% rename from dlls/ieframe/taskbarlist.c rename to dlls/explorerframe/taskbarlist.c index f432317..d40f652 100644 --- a/dlls/ieframe/taskbarlist.c +++ b/dlls/explorerframe/taskbarlist.c @@ -18,7 +18,7 @@ * */
-#include "ieframe.h" +#include "explorerframe_main.h"
#include "wine/debug.h"
@@ -78,7 +78,7 @@ static ULONG STDMETHODCALLTYPE taskbar_list_Release(ITaskbarList4 *iface) if (!refcount) { heap_free(This); - unlock_module(); + EFRAME_UnlockModule(); }
return refcount; @@ -289,7 +289,7 @@ static const struct ITaskbarList4Vtbl taskbar_list_vtbl = taskbar_list_SetTabProperties, };
-HRESULT WINAPI TaskbarList_Create(IClassFactory *iface, IUnknown *outer, REFIID riid, void **taskbar_list) +HRESULT TaskbarList_Constructor(IUnknown *outer, REFIID riid, void **taskbar_list) { struct taskbar_list *object; HRESULT hres; @@ -303,7 +303,7 @@ HRESULT WINAPI TaskbarList_Create(IClassFactory *iface, IUnknown *outer, REFIID return CLASS_E_NOAGGREGATION; }
- object = heap_alloc_zero(sizeof(*object)); + object = heap_alloc(sizeof(*object)); if (!object) { ERR("Failed to allocate taskbar list object memory\n"); @@ -313,7 +313,7 @@ HRESULT WINAPI TaskbarList_Create(IClassFactory *iface, IUnknown *outer, REFIID
object->ITaskbarList4_iface.lpVtbl = &taskbar_list_vtbl; object->refcount = 1; - lock_module(); + EFRAME_LockModule();
TRACE("Created ITaskbarList4 %p\n", object);
diff --git a/dlls/ieframe/Makefile.in b/dlls/ieframe/Makefile.in index dca216b..38800f1 100644 --- a/dlls/ieframe/Makefile.in +++ b/dlls/ieframe/Makefile.in @@ -18,7 +18,6 @@ C_SRCS = \ persist.c \ shellbrowser.c \ shelluihelper.c \ - taskbarlist.c \ urlhist.c \ view.c \ webbrowser.c diff --git a/dlls/ieframe/ieframe.h b/dlls/ieframe/ieframe.h index 4698008..8dd3f17 100644 --- a/dlls/ieframe/ieframe.h +++ b/dlls/ieframe/ieframe.h @@ -305,7 +305,6 @@ HRESULT register_class_object(BOOL) DECLSPEC_HIDDEN; HRESULT WINAPI CUrlHistory_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; HRESULT WINAPI InternetExplorer_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; HRESULT WINAPI InternetShortcut_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; -HRESULT WINAPI TaskbarList_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; HRESULT WINAPI WebBrowser_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN; HRESULT WINAPI WebBrowserV1_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
diff --git a/dlls/ieframe/ieframe_main.c b/dlls/ieframe/ieframe_main.c index 56cd663..7c0b37b 100644 --- a/dlls/ieframe/ieframe_main.c +++ b/dlls/ieframe/ieframe_main.c @@ -201,16 +201,6 @@ static const IClassFactoryVtbl CUrlHistoryFactoryVtbl = {
static IClassFactory CUrlHistoryFactory = { &CUrlHistoryFactoryVtbl };
-static const IClassFactoryVtbl TaskbarListFactoryVtbl = { - ClassFactory_QueryInterface, - ClassFactory_AddRef, - ClassFactory_Release, - TaskbarList_Create, - ClassFactory_LockServer -}; - -static IClassFactory TaskbarListFactory = { &TaskbarListFactoryVtbl }; - /****************************************************************** * DllMain (ieframe.@) */ @@ -250,7 +240,6 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) return IClassFactory_QueryInterface(&WebBrowserV1Factory, riid, ppv); }
- if(IsEqualGUID(rclsid, &CLSID_InternetShortcut)) { TRACE("(CLSID_InternetShortcut %s %p)\n", debugstr_guid(riid), ppv); return IClassFactory_QueryInterface(&InternetShortcutFactory, riid, ppv); @@ -261,12 +250,6 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) return IClassFactory_QueryInterface(&CUrlHistoryFactory, riid, ppv); }
- if(IsEqualGUID(&CLSID_TaskbarList, rclsid)) { - TRACE("(CLSID_TaskbarList %s %p)\n", debugstr_guid(riid), ppv); - return IClassFactory_QueryInterface(&TaskbarListFactory, riid, ppv); - } - - FIXME("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); return CLASS_E_CLASSNOTAVAILABLE; } diff --git a/dlls/ieframe/ieframe_v1.idl b/dlls/ieframe/ieframe_v1.idl index f4f7954..a7d3543 100644 --- a/dlls/ieframe/ieframe_v1.idl +++ b/dlls/ieframe/ieframe_v1.idl @@ -30,12 +30,6 @@ ] coclass CUrlHistory { interface IUrlHistoryStg2; }
[ - helpstring("Task Bar Communication"), - threading(apartment), - uuid(56fdf344-fd6d-11d0-958a-006097c9a090) -] coclass TaskbarList { interface ITaskbarList; } - -[ helpstring("Internet Shortcut"), threading(apartment), progid("InternetShortcut"),