@@ -44,6 +44,7 @@ ApplicationInfo::ApplicationInfo(const QString &appId, QObject *parent)
4444 , m_isTouchApp(true)
4545 , m_exemptFromLifecycle(false)
4646 , m_manualSurfaceCreation(false)
47+ , m_shellChrome(Mir::NormalChrome)
4748{
4849}
4950
@@ -63,6 +64,7 @@ ApplicationInfo::ApplicationInfo(QObject *parent)
6364 , m_isTouchApp(true)
6465 , m_exemptFromLifecycle(false)
6566 , m_manualSurfaceCreation(false)
67+ , m_shellChrome(Mir::NormalChrome)
6668{
6769}
6870
@@ -102,9 +104,11 @@ void ApplicationInfo::setSession(Session* session)
102104 if (m_session) {
103105 m_session->setApplication(this);
104106 m_session->setParent(this);
107+ m_session->setFullscreen(m_fullscreen);
105108 SessionManager::singleton()->registerSession(m_session);
106109 connect(m_session, &Session::surfaceAdded,
107110 this, &ApplicationInfo::onSessionSurfaceAdded);
111+ connect(m_session, &Session::fullscreenChanged, this, &ApplicationInfo::fullscreenChanged);
108112
109113 if (!m_manualSurfaceCreation) {
110114 QTimer::singleShot(500, m_session, &Session::createSurface);
@@ -191,12 +195,17 @@ void ApplicationInfo::setFocused(bool value)
191195
192196void ApplicationInfo::setFullscreen(bool value)
193197{
194− if (value != m_fullscreen) {
195− m_fullscreen = value;
196− Q_EMIT fullscreenChanged(value);
198+ m_fullscreen = value;
199+ if (m_session) {
200+ m_session->setFullscreen(value);
197201 }
198202}
199203
204+bool ApplicationInfo::fullscreen() const
205+{
206+ return m_session ? m_session->fullscreen() : false;
207+}
208+
200209void ApplicationInfo::setManualSurfaceCreation(bool value)
201210{
202211 if (value != m_manualSurfaceCreation) {
@@ -262,6 +271,7 @@ void ApplicationInfo::onSessionSurfaceAdded(MirSurface* surface)
262271 } else {
263272 setState(Suspended);
264273 }
274+ surface->setShellChrome(m_shellChrome);
265275 }
266276}
267277
@@ -291,3 +301,11 @@ void ApplicationInfo::setInitialSurfaceSize(const QSize &size)
291301 Q_EMIT initialSurfaceSizeChanged(m_initialSurfaceSize);
292302 }
293303}
304+
305+void ApplicationInfo::setShellChrome(Mir::ShellChrome shellChrome)
306+{
307+ m_shellChrome = shellChrome;
308+ if (m_session && m_session->lastSurface()) {
309+ m_session->lastSurface()->setShellChrome(shellChrome);
310+ }
311+}