@@ -55,8 +55,9 @@ QString stateToStr(ApplicationInfo::State state)
5555ApplicationInfo::ApplicationInfo(const QString &appId, QObject *parent)
5656 : ApplicationInfoInterface(appId, parent)
5757 , m_appId(appId)
58+ , m_surfaceList(new MirSurfaceListModel(this))
5859{
59− connect(&m_surfaceList, &MirSurfaceListModel::countChanged,
60+ connect(m_surfaceList, &MirSurfaceListModel::countChanged,
6061 this, &ApplicationInfo::onSurfaceCountChanged, Qt::QueuedConnection);
6162
6263 m_surfaceCreationTimer.setSingleShot(true);
@@ -78,8 +79,8 @@ void ApplicationInfo::createSurface()
7879 if (state() == ApplicationInfo::Stopped) { return; }
7980
8081 QString surfaceName = name();
81− if (m_surfaceList.count() > 0) {
82− surfaceName.append(QString(" %1").arg(m_surfaceList.count()+1));
82+ if (m_surfaceList->count() > 0) {
83+ surfaceName.append(QString(" %1").arg(m_surfaceList->count()+1));
8384 }
8485
8586 auto surfaceManager = SurfaceManager::instance();
@@ -95,7 +96,7 @@ void ApplicationInfo::createSurface()
9596
9697 surface->setShellChrome(m_shellChrome);
9798
98− m_surfaceList.appendSurface(surface);
99+ m_surfaceList->appendSurface(surface);
99100
100101 ++m_liveSurfaceCount;
101102 connect(surface, &MirSurface::liveChanged, this, [this, surface](){
@@ -186,12 +187,12 @@ void ApplicationInfo::setState(State value)
186187 if (value != m_state) {
187188 DEBUG_MSG(qPrintable(stateToStr(value)));
188189 if (!m_manualSurfaceCreation && value == ApplicationInfo::Starting) {
189− Q_ASSERT(m_surfaceList.count() == 0);
190+ Q_ASSERT(m_surfaceList->count() == 0);
190191 m_surfaceCreationTimer.start();
191192 } else if (value == ApplicationInfo::Stopped) {
192193 m_surfaceCreationTimer.stop();
193− for (int i = 0; i < m_surfaceList.count(); ++i) {
194− MirSurface *surface = static_cast<MirSurface*>(m_surfaceList.get(i));
194+ for (int i = 0; i < m_surfaceList->count(); ++i) {
195+ MirSurface *surface = static_cast<MirSurface*>(m_surfaceList->get(i));
195196 surface->setLive(false);
196197 }
197198 }
@@ -205,9 +206,9 @@ void ApplicationInfo::close()
205206{
206207 DEBUG_MSG("");
207208
208− if (m_surfaceList.count() > 0) {
209− for (int i = 0; i < m_surfaceList.count(); ++i) {
210− MirSurface *surface = static_cast<MirSurface*>(m_surfaceList.get(i));
209+ if (m_surfaceList->count() > 0) {
210+ for (int i = 0; i < m_surfaceList->count(); ++i) {
211+ MirSurface *surface = static_cast<MirSurface*>(m_surfaceList->get(i));
211212 surface->close();
212213 }
213214 } else {
@@ -219,15 +220,15 @@ void ApplicationInfo::close()
219220void ApplicationInfo::setFullscreen(bool value)
220221{
221222 m_fullscreen = value;
222− if (m_surfaceList.rowCount() > 0) {
223− m_surfaceList.get(0)->setState(Mir::FullscreenState);
223+ if (m_surfaceList->rowCount() > 0) {
224+ m_surfaceList->get(0)->setState(Mir::FullscreenState);
224225 }
225226}
226227
227228bool ApplicationInfo::fullscreen() const
228229{
229− if (m_surfaceList.rowCount() > 0) {
230− return m_surfaceList.get(0)->state() == Mir::FullscreenState;
230+ if (m_surfaceList->rowCount() > 0) {
231+ return m_surfaceList->get(0)->state() == Mir::FullscreenState;
231232 } else {
232233 return m_fullscreen;
233234 }
@@ -333,16 +334,16 @@ void ApplicationInfo::setInitialSurfaceSize(const QSize &size)
333334void ApplicationInfo::setShellChrome(Mir::ShellChrome shellChrome)
334335{
335336 m_shellChrome = shellChrome;
336− if (m_surfaceList.rowCount() > 0) {
337− static_cast<MirSurface*>(m_surfaceList.get(0))->setShellChrome(shellChrome);
337+ if (m_surfaceList->rowCount() > 0) {
338+ static_cast<MirSurface*>(m_surfaceList->get(0))->setShellChrome(shellChrome);
338339 }
339340}
340341
341342bool ApplicationInfo::focused() const
342343{
343344 bool someSurfaceHasFocus = false; // to be proven wrong
344− for (int i = 0; i < m_surfaceList.count() && !someSurfaceHasFocus; ++i) {
345− someSurfaceHasFocus = m_surfaceList.get(i)->focused();
345+ for (int i = 0; i < m_surfaceList->count() && !someSurfaceHasFocus; ++i) {
346+ someSurfaceHasFocus = m_surfaceList->get(i)->focused();
346347 }
347348 return someSurfaceHasFocus;
348349}
@@ -354,12 +355,12 @@ void ApplicationInfo::setFocused(bool value)
354355 }
355356
356357 if (value) {
357− if (m_surfaceList.count() > 0) {
358− m_surfaceList.get(0)->requestFocus();
358+ if (m_surfaceList->count() > 0) {
359+ m_surfaceList->get(0)->requestFocus();
359360 }
360361 } else {
361− for (int i = 0; i < m_surfaceList.count(); ++i) {
362− MirSurface *surface = static_cast<MirSurface*>(m_surfaceList.get(i));
362+ for (int i = 0; i < m_surfaceList->count(); ++i) {
363+ MirSurface *surface = static_cast<MirSurface*>(m_surfaceList->get(i));
363364 if (surface->focused()) {
364365 surface->setFocused(false);
365366 }
@@ -369,16 +370,16 @@ void ApplicationInfo::setFocused(bool value)
369370
370371void ApplicationInfo::onSurfaceCountChanged()
371372{
372− if (m_surfaceList.count() == 0 && m_state == Running) {
373+ if (m_surfaceList->count() == 0 && m_state == Running) {
373374 setState(Stopped);
374375 }
375376}
376377
377378void ApplicationInfo::requestFocus()
378379{
379− if (m_surfaceList.count() == 0) {
380+ if (m_surfaceList->count() == 0) {
380381 Q_EMIT focusRequested();
381382 } else {
382− m_surfaceList.get(0)->requestFocus();
383+ m_surfaceList->get(0)->requestFocus();
383384 }
384385}