Module: wine Branch: master Commit: 2cd4117f81cb93da8a5b4ad13573d132e8118fc2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2cd4117f81cb93da8a5b4ad135...
Author: Rob Shearman rob@codeweavers.com Date: Tue Apr 15 18:29:32 2008 +0100
ole32: Fix OLEClipbrd_IDataObject_QueryGetData to conform to the tests.
---
dlls/ole32/clipboard.c | 33 ++++++--------------------------- dlls/ole32/tests/clipboard.c | 11 ++++++----- 2 files changed, 12 insertions(+), 32 deletions(-)
diff --git a/dlls/ole32/clipboard.c b/dlls/ole32/clipboard.c index ad15219..a74e71a 100644 --- a/dlls/ole32/clipboard.c +++ b/dlls/ole32/clipboard.c @@ -1312,42 +1312,21 @@ static HRESULT WINAPI OLEClipbrd_IDataObject_QueryGetData( 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; }
/************************************************************************ diff --git a/dlls/ole32/tests/clipboard.c b/dlls/ole32/tests/clipboard.c index aa2f622..c6371cd 100644 --- a/dlls/ole32/tests/clipboard.c +++ b/dlls/ole32/tests/clipboard.c @@ -226,7 +226,7 @@ static HRESULT WINAPI DataObjectImpl_QueryGetData(IDataObject* iface, FORMATETC 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; @@ -343,25 +343,26 @@ static void test_get_clipboard(void) 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;