From 385b0e0b201cefa29d2314e105489343734487b2 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sun, 7 Apr 2019 20:15:58 +0300 Subject: [PATCH] update struts properly for TopLayouts --- app/layout/genericlayout.cpp | 5 +++++ app/layout/genericlayout.h | 1 + app/layout/toplayout.cpp | 11 +++++++++++ app/layout/toplayout.h | 3 +++ app/view/visibilitymanager.cpp | 2 +- 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/layout/genericlayout.cpp b/app/layout/genericlayout.cpp index d16bbcd8c..6b711152b 100644 --- a/app/layout/genericlayout.cpp +++ b/app/layout/genericlayout.cpp @@ -133,6 +133,11 @@ void GenericLayout::setBlockAutomaticLatteViewCreation(bool block) m_blockAutomaticLatteViewCreation = block; } +bool GenericLayout::isCurrent() const +{ + return name() == m_corona->layoutManager()->currentLayoutName(); +} + int GenericLayout::viewsCount(int screen) const { if (!m_corona) { diff --git a/app/layout/genericlayout.h b/app/layout/genericlayout.h index c38c25bb7..cbcd08177 100644 --- a/app/layout/genericlayout.h +++ b/app/layout/genericlayout.h @@ -71,6 +71,7 @@ public: void importToCorona(); bool initToCorona(Latte::Corona *corona); + virtual bool isCurrent() const; bool isWritable() const; bool layoutIsBroken() const; diff --git a/app/layout/toplayout.cpp b/app/layout/toplayout.cpp index 48880b346..46fbd3d16 100644 --- a/app/layout/toplayout.cpp +++ b/app/layout/toplayout.cpp @@ -36,6 +36,17 @@ TopLayout::~TopLayout() { } +bool TopLayout::isCurrent() const +{ + for (const auto &layout : m_activeLayouts) { + if (layout->isCurrent()) { + return true; + } + } + + return false; +} + const QStringList TopLayout::appliedActivities() { if (!m_corona) { diff --git a/app/layout/toplayout.h b/app/layout/toplayout.h index c9f8121e7..0f69fc1bb 100644 --- a/app/layout/toplayout.h +++ b/app/layout/toplayout.h @@ -48,6 +48,9 @@ public: const QStringList appliedActivities(); + //! OVERRIDE GeneralLayout implementations + bool isCurrent() const override; + public slots: void addActiveLayout(ActiveLayout *layout); void removeActiveLayout(ActiveLayout *layout); diff --git a/app/view/visibilitymanager.cpp b/app/view/visibilitymanager.cpp index 3a1f8aa6f..6cdf00a77 100644 --- a/app/view/visibilitymanager.cpp +++ b/app/view/visibilitymanager.cpp @@ -244,7 +244,7 @@ void VisibilityManager::updateStrutsBasedOnLayoutsAndActivities() { bool multipleLayoutsAndCurrent = (m_corona->layoutManager()->memoryUsage() == Types::MultipleLayouts && m_latteView->managedLayout() && !m_latteView->positioner()->inLocationChangeAnimation() - && m_latteView->managedLayout()->name() == m_corona->layoutManager()->currentLayoutName()); + && m_latteView->managedLayout()->isCurrent()); if (m_corona->layoutManager()->memoryUsage() == Types::SingleLayout || multipleLayoutsAndCurrent) { wm->setViewStruts(*m_latteView, m_viewGeometry, m_latteView->location());