From 2cd4117f81cb93da8a5b4ad13573d132e8118fc2 Mon Sep 17 00:00:00 2001 From: Rob Shearman Date: Tue, 15 Apr 2008 18:29:32 +0100 Subject: [PATCH] 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 ad15219a6aa..a74e71a12e6 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 aa2f622efae..c6371cd52e4 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;