explorerframe: Moved TaskbarList implementation to explorerframe.
This commit is contained in:
parent
1040e41516
commit
deeb14e0ee
|
@ -4,7 +4,8 @@ IMPORTS = uuid ole32 shell32 user32
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
explorerframe_main.c \
|
explorerframe_main.c \
|
||||||
nstc.c
|
nstc.c \
|
||||||
|
taskbarlist.c
|
||||||
|
|
||||||
IDL_R_SRCS = explorerframe.idl
|
IDL_R_SRCS = explorerframe.idl
|
||||||
|
|
||||||
|
|
|
@ -24,3 +24,10 @@
|
||||||
uuid(ae054212-3535-4430-83ed-d501aa6680e6)
|
uuid(ae054212-3535-4430-83ed-d501aa6680e6)
|
||||||
]
|
]
|
||||||
coclass NamespaceTreeControl { interface INameSpaceTreeControl2; }
|
coclass NamespaceTreeControl { interface INameSpaceTreeControl2; }
|
||||||
|
|
||||||
|
[
|
||||||
|
helpstring("Task Bar Communication"),
|
||||||
|
threading(apartment),
|
||||||
|
uuid(56fdf344-fd6d-11d0-958a-006097c9a090)
|
||||||
|
]
|
||||||
|
coclass TaskbarList { interface ITaskbarList; }
|
||||||
|
|
|
@ -199,12 +199,16 @@ static const IClassFactoryVtbl EFCF_Vtbl =
|
||||||
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
|
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
|
||||||
{
|
{
|
||||||
static IClassFactoryImpl NSTCClassFactory = {{&EFCF_Vtbl}, NamespaceTreeControl_Constructor};
|
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);
|
TRACE("%s, %s, %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||||
|
|
||||||
if(IsEqualGUID(&CLSID_NamespaceTreeControl, rclsid))
|
if(IsEqualGUID(&CLSID_NamespaceTreeControl, rclsid))
|
||||||
return IClassFactory_QueryInterface(&NSTCClassFactory.IClassFactory_iface, riid, ppv);
|
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;
|
return CLASS_E_CLASSNOTAVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
#ifndef __WINE_EXPLORERFRAME_H
|
#ifndef __WINE_EXPLORERFRAME_H
|
||||||
#define __WINE_EXPLORERFRAME_H
|
#define __WINE_EXPLORERFRAME_H
|
||||||
|
|
||||||
|
#define COBJMACROS
|
||||||
|
|
||||||
#include "shlobj.h"
|
#include "shlobj.h"
|
||||||
|
|
||||||
/* Not declared in commctrl.h ("for internal use (msdn)") */
|
/* 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 ); }
|
static inline void EFRAME_UnlockModule(void) { InterlockedDecrement( &EFRAME_refCount ); }
|
||||||
|
|
||||||
HRESULT NamespaceTreeControl_Constructor(IUnknown *pUnkOuter, REFIID riid, void **ppv) DECLSPEC_HIDDEN;
|
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 */
|
#endif /* __WINE_EXPLORERFRAME_H */
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ieframe.h"
|
#include "explorerframe_main.h"
|
||||||
|
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ static ULONG STDMETHODCALLTYPE taskbar_list_Release(ITaskbarList4 *iface)
|
||||||
if (!refcount)
|
if (!refcount)
|
||||||
{
|
{
|
||||||
heap_free(This);
|
heap_free(This);
|
||||||
unlock_module();
|
EFRAME_UnlockModule();
|
||||||
}
|
}
|
||||||
|
|
||||||
return refcount;
|
return refcount;
|
||||||
|
@ -289,7 +289,7 @@ static const struct ITaskbarList4Vtbl taskbar_list_vtbl =
|
||||||
taskbar_list_SetTabProperties,
|
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;
|
struct taskbar_list *object;
|
||||||
HRESULT hres;
|
HRESULT hres;
|
||||||
|
@ -303,7 +303,7 @@ HRESULT WINAPI TaskbarList_Create(IClassFactory *iface, IUnknown *outer, REFIID
|
||||||
return CLASS_E_NOAGGREGATION;
|
return CLASS_E_NOAGGREGATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
object = heap_alloc_zero(sizeof(*object));
|
object = heap_alloc(sizeof(*object));
|
||||||
if (!object)
|
if (!object)
|
||||||
{
|
{
|
||||||
ERR("Failed to allocate taskbar list object memory\n");
|
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->ITaskbarList4_iface.lpVtbl = &taskbar_list_vtbl;
|
||||||
object->refcount = 1;
|
object->refcount = 1;
|
||||||
lock_module();
|
EFRAME_LockModule();
|
||||||
|
|
||||||
TRACE("Created ITaskbarList4 %p\n", object);
|
TRACE("Created ITaskbarList4 %p\n", object);
|
||||||
|
|
|
@ -18,7 +18,6 @@ C_SRCS = \
|
||||||
persist.c \
|
persist.c \
|
||||||
shellbrowser.c \
|
shellbrowser.c \
|
||||||
shelluihelper.c \
|
shelluihelper.c \
|
||||||
taskbarlist.c \
|
|
||||||
urlhist.c \
|
urlhist.c \
|
||||||
view.c \
|
view.c \
|
||||||
webbrowser.c
|
webbrowser.c
|
||||||
|
|
|
@ -305,7 +305,6 @@ HRESULT register_class_object(BOOL) DECLSPEC_HIDDEN;
|
||||||
HRESULT WINAPI CUrlHistory_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
|
HRESULT WINAPI CUrlHistory_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
|
||||||
HRESULT WINAPI InternetExplorer_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 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 WebBrowser_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
|
||||||
HRESULT WINAPI WebBrowserV1_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
|
HRESULT WINAPI WebBrowserV1_Create(IClassFactory*,IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
|
|
|
@ -201,16 +201,6 @@ static const IClassFactoryVtbl CUrlHistoryFactoryVtbl = {
|
||||||
|
|
||||||
static IClassFactory CUrlHistoryFactory = { &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.@)
|
* DllMain (ieframe.@)
|
||||||
*/
|
*/
|
||||||
|
@ -250,7 +240,6 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||||
return IClassFactory_QueryInterface(&WebBrowserV1Factory, riid, ppv);
|
return IClassFactory_QueryInterface(&WebBrowserV1Factory, riid, ppv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(IsEqualGUID(rclsid, &CLSID_InternetShortcut)) {
|
if(IsEqualGUID(rclsid, &CLSID_InternetShortcut)) {
|
||||||
TRACE("(CLSID_InternetShortcut %s %p)\n", debugstr_guid(riid), ppv);
|
TRACE("(CLSID_InternetShortcut %s %p)\n", debugstr_guid(riid), ppv);
|
||||||
return IClassFactory_QueryInterface(&InternetShortcutFactory, 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);
|
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);
|
FIXME("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||||
return CLASS_E_CLASSNOTAVAILABLE;
|
return CLASS_E_CLASSNOTAVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,12 +29,6 @@
|
||||||
uuid(3c374a40-bae4-11cf-bf7d-00aa006946ee)
|
uuid(3c374a40-bae4-11cf-bf7d-00aa006946ee)
|
||||||
] coclass CUrlHistory { interface IUrlHistoryStg2; }
|
] coclass CUrlHistory { interface IUrlHistoryStg2; }
|
||||||
|
|
||||||
[
|
|
||||||
helpstring("Task Bar Communication"),
|
|
||||||
threading(apartment),
|
|
||||||
uuid(56fdf344-fd6d-11d0-958a-006097c9a090)
|
|
||||||
] coclass TaskbarList { interface ITaskbarList; }
|
|
||||||
|
|
||||||
[
|
[
|
||||||
helpstring("Internet Shortcut"),
|
helpstring("Internet Shortcut"),
|
||||||
threading(apartment),
|
threading(apartment),
|
||||||
|
|
Loading…
Reference in New Issue