winrt: Fix compilation for 10586 SDK

The current implementation of drag and drop requires Redstone 2 Update
(SDK version 14322) to be fully functional. The API is limited for
previous versions.

However, this mostly affects passing allowed operations between sender
and receiver, the rest is mostly functional still.

Once RedStone 2 is out (estimated July 2016) we can bump the minimum SDK
version to 14322.

Task-number: QTBUG-50827
Change-Id: I5bab9d36a228d68c1809c241a64168d48c353335
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
This commit is contained in:
Maurice Kalinowski 2016-06-02 11:12:29 +02:00 committed by Liang Qi
parent c2d4c3588c
commit 9c01fdb2ba
2 changed files with 10 additions and 1 deletions

View File

@ -623,6 +623,7 @@ Qt::DropAction QWinRTDrag::drag(QDrag *drag)
hr = dataPackage->put_RequestedOperation(translateFromQDragDropActions(action));
Q_ASSERT_SUCCEEDED(hr);
#ifndef QT_WINRT_LIMITED_DRAGANDDROP
ComPtr<IDragStartingEventArgs2> args2;
hr = args->QueryInterface(IID_PPV_ARGS(&args2));
Q_ASSERT_SUCCEEDED(hr);
@ -637,7 +638,7 @@ Qt::DropAction QWinRTDrag::drag(QDrag *drag)
allowedOperations |= DataPackageOperation_Link;
hr = args2->put_AllowedOperations(allowedOperations);
Q_ASSERT_SUCCEEDED(hr);
#endif // QT_WINRT_LIMITED_DRAGANDDROP
QMimeData *mimeData = drag->mimeData();
if (mimeData->hasText()) {
hr = dataPackage->SetText(qStringToHString(mimeData->text()).Get());
@ -811,6 +812,7 @@ void QWinRTDrag::handleNativeDragEvent(IInspectable *sender, ABI::Windows::UI::X
DragDropModifiers modifiers;
hr = e2->get_Modifiers(&modifiers);
#ifndef QT_WINRT_LIMITED_DRAGANDDROP
ComPtr<IDragEventArgs3> e3;
hr = e->QueryInterface(IID_PPV_ARGS(&e3));
Q_ASSERT_SUCCEEDED(hr);
@ -821,6 +823,9 @@ void QWinRTDrag::handleNativeDragEvent(IInspectable *sender, ABI::Windows::UI::X
qCDebug(lcQpaMime) << __FUNCTION__ << "Could not query drag operations";
const Qt::DropActions actions = translateToQDragDropActions(dataOp);
#else // !QT_WINRT_LIMITED_DRAGANDDROP
const Qt::DropActions actions = Qt::LinkAction | Qt::CopyAction | Qt::MoveAction;;
#endif // !QT_WINRT_LIMITED_DRAGANDDROP
ComPtr<IDataPackageView> dataView;
hr = e2->get_DataView(&dataView);

View File

@ -49,6 +49,10 @@ HEADERS = \
OTHER_FILES += winrt.json
WINRT_SDK_VERSION_STRING = $$(UCRTVersion)
WINRT_SDK_VERSION = $$member($$list($$split(WINRT_SDK_VERSION_STRING, .)), 2)
lessThan(WINRT_SDK_VERSION, 14322): DEFINES += QT_WINRT_LIMITED_DRAGANDDROP
*-msvc2013|contains(DEFINES, QT_NO_DRAGANDDROP) {
SOURCES -= qwinrtdrag.cpp
HEADERS -= qwinrtdrag.h