Commit 979c9296 authored by Aric Stewart's avatar Aric Stewart Committed by Alexandre Julliard

msctf: Implement ITfCompartmentMgr::ClearCompartment.

parent ca9ca58c
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "winerror.h" #include "winerror.h"
#include "objbase.h" #include "objbase.h"
#include "oleauto.h" #include "oleauto.h"
#include "olectl.h"
#include "wine/unicode.h" #include "wine/unicode.h"
#include "wine/list.h" #include "wine/list.h"
...@@ -140,9 +141,25 @@ static HRESULT WINAPI CompartmentMgr_GetCompartment(ITfCompartmentMgr *iface, ...@@ -140,9 +141,25 @@ static HRESULT WINAPI CompartmentMgr_GetCompartment(ITfCompartmentMgr *iface,
static HRESULT WINAPI CompartmentMgr_ClearCompartment(ITfCompartmentMgr *iface, static HRESULT WINAPI CompartmentMgr_ClearCompartment(ITfCompartmentMgr *iface,
TfClientId tid, REFGUID rguid) TfClientId tid, REFGUID rguid)
{ {
struct list *cursor;
CompartmentMgr *This = (CompartmentMgr *)iface; CompartmentMgr *This = (CompartmentMgr *)iface;
FIXME("STUB:(%p)\n",This); TRACE("(%p) %i %s\n",This,tid,debugstr_guid(rguid));
return E_NOTIMPL;
LIST_FOR_EACH(cursor, &This->values)
{
CompartmentValue* value = LIST_ENTRY(cursor,CompartmentValue,entry);
if (IsEqualGUID(rguid,&value->guid))
{
if (value->owner && tid != value->owner)
return E_UNEXPECTED;
list_remove(cursor);
ITfCompartment_Release(value->compartment);
HeapFree(GetProcessHeap(),0,value);
return S_OK;
}
}
return CONNECT_E_NOCONNECTION;
} }
static HRESULT WINAPI CompartmentMgr_EnumCompartments(ITfCompartmentMgr *iface, static HRESULT WINAPI CompartmentMgr_EnumCompartments(ITfCompartmentMgr *iface,
......
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