ole32: Don't set cf_dataobject if we're clearing the clipboard.

This commit is contained in:
Huw Davies 2009-04-17 13:44:27 +01:00 committed by Alexandre Julliard
parent 1e73a54690
commit 575b0e1435
2 changed files with 18 additions and 1 deletions

View File

@ -1729,7 +1729,8 @@ HRESULT WINAPI OleSetClipboard(IDataObject* data)
hr = set_src_dataobject(clipbrd, data);
if(FAILED(hr)) goto end;
hr = set_dataobject_format(wnd);
if(data)
hr = set_dataobject_format(wnd);
end:

View File

@ -595,6 +595,21 @@ static void test_enum_fmtetc(IDataObject *src)
IDataObject_Release(data);
}
static void test_no_cf_dataobject(void)
{
UINT cf_dataobject = RegisterClipboardFormatA("DataObject");
UINT cf_ole_priv_data = RegisterClipboardFormatA("Ole Private Data");
HANDLE h;
OpenClipboard(NULL);
h = GetClipboardData(cf_dataobject);
ok(!h, "got %p\n", h);
h = GetClipboardData(cf_ole_priv_data);
ok(!h, "got %p\n", h);
CloseClipboard();
}
static void test_cf_dataobject(IDataObject *data)
{
UINT cf = 0;
@ -851,6 +866,7 @@ static void test_set_clipboard(void)
ok(OleSetClipboard(NULL) == S_OK, "failed to clear clipboard, hr = 0x%08x\n", hr);
test_no_cf_dataobject();
test_enum_fmtetc(NULL);
ref = IDataObject_Release(data1);