Commit 9cdbf48c authored by Samuel Nevala's avatar Samuel Nevala
Browse files

winrt: Fix MessageDialog show on windows phone.


Run native dialog show on XAML thread.

Change-Id: I6273340e87d70aae21c838d9d7646a233c1f48be
Task-Id: QTBUG-47938
Reviewed-by: default avatarAndrew Knight <andrew.knight@intopalo.com>
Showing with 16 additions and 10 deletions
......@@ -38,7 +38,9 @@
#include "qwinrttheme.h"
#include <QtCore/qfunctions_winrt.h>
#include <private/qeventdispatcher_winrt_p.h>
#include <functional>
#include <windows.ui.popups.h>
#include <windows.foundation.h>
#include <windows.foundation.collections.h>
......@@ -168,16 +170,20 @@ bool QWinRTMessageDialogHelper::show(Qt::WindowFlags windowFlags, Qt::WindowModa
}
}
ComPtr<IAsyncOperation<IUICommand *>> op;
hr = dialog->ShowAsync(&op);
RETURN_FALSE_IF_FAILED("Failed to show dialog");
hr = op->put_Completed(Callback<DialogCompletedHandler>(this, &QWinRTMessageDialogHelper::onCompleted).Get());
RETURN_FALSE_IF_FAILED("Failed to set dialog callback");
d->shown = true;
hr = op.As(&d->info);
RETURN_FALSE_IF_FAILED("Failed to acquire AsyncInfo for MessageDialog");
hr = QEventDispatcherWinRT::runOnXamlThread([this, d, dialog]() {
HRESULT hr;
ComPtr<IAsyncOperation<IUICommand *>> op;
hr = dialog->ShowAsync(&op);
RETURN_HR_IF_FAILED("Failed to show dialog");
hr = op->put_Completed(Callback<DialogCompletedHandler>(this, &QWinRTMessageDialogHelper::onCompleted).Get());
RETURN_HR_IF_FAILED("Failed to set dialog callback");
d->shown = true;
hr = op.As(&d->info);
RETURN_HR_IF_FAILED("Failed to acquire AsyncInfo for MessageDialog");
return hr;
});
RETURN_FALSE_IF_FAILED("Failed to show dialog")
return true;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment