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:
parent
c2d4c3588c
commit
9c01fdb2ba
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user