summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMaurice Kalinowski <maurice.kalinowski@theqtcompany.com>2014-10-31 16:09:23 +0100
committerMaurice Kalinowski <maurice.kalinowski@theqtcompany.com>2014-11-03 10:58:26 +0100
commita31ad5b73ad31402c0dc89ce913b032c35bab79d (patch)
treee8e12a72a155f1d4fc883a328d390c9f5255eed8 /src
parent1b80e7a9d3f4f67597c6987c291f4c1b6adaf4a5 (diff)
WinRT: Set WindowTitle in application switcher
Add platform backend for QWinRTWindow::setWindowTitle. Task-number: QTBUG-40736 Change-Id: I0b03c9b5977368b38ba63044b00178c3f2bb0b86 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/winrt/qwinrtwindow.cpp27
-rw-r--r--src/plugins/platforms/winrt/qwinrtwindow.h1
2 files changed, 28 insertions, 0 deletions
diff --git a/src/plugins/platforms/winrt/qwinrtwindow.cpp b/src/plugins/platforms/winrt/qwinrtwindow.cpp
index 35d6b64008..8800db60d3 100644
--- a/src/plugins/platforms/winrt/qwinrtwindow.cpp
+++ b/src/plugins/platforms/winrt/qwinrtwindow.cpp
@@ -40,6 +40,14 @@
#include <QtGui/QWindow>
#include <QtGui/QOpenGLContext>
+#include <qfunctions_winrt.h>
+#include <windows.ui.viewmanagement.h>
+#include <wrl.h>
+
+using namespace ABI::Windows::UI::ViewManagement;
+using namespace Microsoft::WRL;
+using namespace Microsoft::WRL::Wrappers;
+
QT_BEGIN_NAMESPACE
QWinRTWindow::QWinRTWindow(QWindow *window)
@@ -48,6 +56,7 @@ QWinRTWindow::QWinRTWindow(QWindow *window)
{
setWindowFlags(window->flags());
setWindowState(window->windowState());
+ setWindowTitle(window->title());
handleContentOrientationChange(window->contentOrientation());
setGeometry(window->geometry());
}
@@ -94,6 +103,24 @@ void QWinRTWindow::setVisible(bool visible)
m_screen->removeWindow(window());
}
+void QWinRTWindow::setWindowTitle(const QString &title)
+{
+ ComPtr<IApplicationViewStatics2> statics;
+ HRESULT hr;
+
+ hr = RoGetActivationFactory(HString::MakeReference(RuntimeClass_Windows_UI_ViewManagement_ApplicationView).Get(),
+ IID_PPV_ARGS(&statics));
+ RETURN_VOID_IF_FAILED("Could not get ApplicationViewStatics");
+
+ ComPtr<IApplicationView> view;
+ hr = statics->GetForCurrentView(&view);
+ RETURN_VOID_IF_FAILED("Could not access currentView");
+
+ HStringReference str(reinterpret_cast<LPCWSTR>(title.utf16()), title.length());
+ hr = view->put_Title(str.Get());
+ RETURN_VOID_IF_FAILED("Unable to set window title");
+}
+
void QWinRTWindow::raise()
{
if (!window()->isTopLevel())
diff --git a/src/plugins/platforms/winrt/qwinrtwindow.h b/src/plugins/platforms/winrt/qwinrtwindow.h
index 85f3efab5d..7e01efa818 100644
--- a/src/plugins/platforms/winrt/qwinrtwindow.h
+++ b/src/plugins/platforms/winrt/qwinrtwindow.h
@@ -52,6 +52,7 @@ public:
bool isExposed() const;
void setGeometry(const QRect &rect);
void setVisible(bool visible);
+ void setWindowTitle(const QString &title);
void raise();
void lower();