IDataObject* iface,
LPFORMATETC pformatetc)
{
- /*
- * Declare "This" pointer
- */
- OLEClipbrd *This = (OLEClipbrd *)iface;
-
TRACE("(%p, %p)\n", iface, pformatetc);
- /*
- * If we have a data source placed on the clipboard (via OleSetClipboard)
- * simply delegate to the source object's QueryGetData
- */
- if ( This->pIDataObjectSrc )
- {
- return IDataObject_QueryGetData(This->pIDataObjectSrc, pformatetc);
- }
-
if (!pformatetc)
return E_INVALIDARG;
-/*
- if ( pformatetc->dwAspect != DVASPECT_CONTENT )
- return DV_E_DVASPECT;
-*/
- if ( pformatetc->lindex != -1 )
- return DV_E_LINDEX;
- /* TODO: Handle TYMED_IStorage media which were put on the clipboard
- * by copying the storage into global memory. We must convert this
- * TYMED_HGLOBAL back to TYMED_IStorage.
- */
- if ( pformatetc->tymed != TYMED_HGLOBAL )
- return DV_E_TYMED;
+ if ( pformatetc->dwAspect != DVASPECT_CONTENT )
+ return DV_E_FORMATETC;
+
+ if ( pformatetc->lindex != -1 )
+ return DV_E_FORMATETC;
/*
* Delegate to the Windows clipboard function IsClipboardFormatAvailable
*/
- return (IsClipboardFormatAvailable(pformatetc->cfFormat)) ? S_OK : DV_E_FORMATETC;
+ return (IsClipboardFormatAvailable(pformatetc->cfFormat)) ? S_OK : DV_E_CLIPFORMAT;
}
/************************************************************************
BOOL foundFormat = FALSE;
if (!expect_DataObjectImpl_QueryGetData)
- todo_wine ok(0, "unexpected call to DataObjectImpl_QueryGetData\n");
+ ok(0, "unexpected call to DataObjectImpl_QueryGetData\n");
if(pformatetc->lindex != -1)
return DV_E_LINDEX;
InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
fmtetc.dwAspect = 0xdeadbeef;
hr = IDataObject_QueryGetData(data_obj, &fmtetc);
- todo_wine
+ ok(hr == DV_E_FORMATETC, "IDataObject_QueryGetData should have failed with DV_E_FORMATETC instead of 0x%08x\n", hr);
+
+ InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
+ fmtetc.dwAspect = DVASPECT_THUMBNAIL;
+ hr = IDataObject_QueryGetData(data_obj, &fmtetc);
ok(hr == DV_E_FORMATETC, "IDataObject_QueryGetData should have failed with DV_E_FORMATETC instead of 0x%08x\n", hr);
InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
fmtetc.lindex = 256;
hr = IDataObject_QueryGetData(data_obj, &fmtetc);
- todo_wine
ok(hr == DV_E_FORMATETC, "IDataObject_QueryGetData should have failed with DV_E_FORMATETC instead of 0x%08x\n", hr);
InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
fmtetc.cfFormat = CF_RIFF;
hr = IDataObject_QueryGetData(data_obj, &fmtetc);
- todo_wine
ok(hr == DV_E_CLIPFORMAT, "IDataObject_QueryGetData should have failed with DV_E_CLIPFORMAT instead of 0x%08x\n", hr);
InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
fmtetc.tymed = TYMED_FILE;
hr = IDataObject_QueryGetData(data_obj, &fmtetc);
- todo_wine
ok(hr == S_OK, "IDataObject_QueryGetData failed with error 0x%08x\n", hr);
expect_DataObjectImpl_QueryGetData = TRUE;