diff options
author | Maurice Kalinowski <maurice.kalinowski@theqtcompany.com> | 2015-10-13 15:07:54 +0200 |
---|---|---|
committer | Maurice Kalinowski <maurice.kalinowski@theqtcompany.com> | 2015-10-21 12:59:37 +0000 |
commit | fb049254c80ecff168542fe8ae035a3abd03cf08 (patch) | |
tree | 263a1f9d48e90144b590902ec5172ac8466bd2fa /src/plugins | |
parent | 70b229d996d45a661fe70fdb18909ad0e364f7ba (diff) |
WinRT: Fix InputPanel on Windows 10
Check for MSVC2015 to enable usage of IInputPane(2). Move object
construction to the XAML Thread, otherwise instantiation will fail when
running on desktop.
Task-number: QTBUG-44494
Change-Id: I816230cc5b0def796e86e6c6bb05a552a4e59d1b
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/winrt/qwinrtinputcontext.cpp | 28 | ||||
-rw-r--r-- | src/plugins/platforms/winrt/qwinrtinputcontext.h | 2 |
2 files changed, 13 insertions, 17 deletions
diff --git a/src/plugins/platforms/winrt/qwinrtinputcontext.cpp b/src/plugins/platforms/winrt/qwinrtinputcontext.cpp index f3b390b4d6..750233c94f 100644 --- a/src/plugins/platforms/winrt/qwinrtinputcontext.cpp +++ b/src/plugins/platforms/winrt/qwinrtinputcontext.cpp @@ -131,7 +131,7 @@ HRESULT QWinRTInputContext::handleVisibilityChange(IInputPane *pane) return S_OK; } -#ifdef Q_OS_WINPHONE +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) static HRESULT getInputPane(ComPtr<IInputPane2> *inputPane2) { @@ -160,13 +160,11 @@ static HRESULT getInputPane(ComPtr<IInputPane2> *inputPane2) void QWinRTInputContext::showInputPanel() { - ComPtr<IInputPane2> inputPane; - HRESULT hr = getInputPane(&inputPane); - if (FAILED(hr)) - return; - - QEventDispatcherWinRT::runOnXamlThread([&inputPane]() { - HRESULT hr; + QEventDispatcherWinRT::runOnXamlThread([&]() { + ComPtr<IInputPane2> inputPane; + HRESULT hr = getInputPane(&inputPane); + if (FAILED(hr)) + return hr; boolean success; hr = inputPane->TryShow(&success); if (FAILED(hr) || !success) @@ -177,13 +175,11 @@ void QWinRTInputContext::showInputPanel() void QWinRTInputContext::hideInputPanel() { - ComPtr<IInputPane2> inputPane; - HRESULT hr = getInputPane(&inputPane); - if (FAILED(hr)) - return; - - QEventDispatcherWinRT::runOnXamlThread([&inputPane]() { - HRESULT hr; + QEventDispatcherWinRT::runOnXamlThread([&]() { + ComPtr<IInputPane2> inputPane; + HRESULT hr = getInputPane(&inputPane); + if (FAILED(hr)) + return hr; boolean success; hr = inputPane->TryHide(&success); if (FAILED(hr) || !success) @@ -192,6 +188,6 @@ void QWinRTInputContext::hideInputPanel() }); } -#endif // Q_OS_WINPHONE +#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) QT_END_NAMESPACE diff --git a/src/plugins/platforms/winrt/qwinrtinputcontext.h b/src/plugins/platforms/winrt/qwinrtinputcontext.h index cc3bce435f..6f88ff46e6 100644 --- a/src/plugins/platforms/winrt/qwinrtinputcontext.h +++ b/src/plugins/platforms/winrt/qwinrtinputcontext.h @@ -68,7 +68,7 @@ public: bool isInputPanelVisible() const; -#ifdef Q_OS_WINPHONE +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) void showInputPanel(); void hideInputPanel(); #endif |