From bb3e82024e933372ce40167a698709f89001e9f1 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Wed, 1 May 2019 23:04:39 +0300 Subject: [PATCH] simplify valid struts calculations --- app/view/visibilitymanager.cpp | 39 +++++++++++++++++++++++++++++++++- app/view/visibilitymanager.h | 4 ++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/app/view/visibilitymanager.cpp b/app/view/visibilitymanager.cpp index 119bc8a9f..b9b33074f 100644 --- a/app/view/visibilitymanager.cpp +++ b/app/view/visibilitymanager.cpp @@ -243,12 +243,49 @@ void VisibilityManager::updateStrutsBasedOnLayoutsAndActivities() && m_latteView->managedLayout()->isCurrent()); if (m_corona->layoutManager()->memoryUsage() == Types::SingleLayout || multipleLayoutsAndCurrent) { - m_wm->setViewStruts(*m_latteView, m_latteView->absoluteGeometry(), m_latteView->location()); + QRect computedStruts = acceptableStruts(); + + if (m_publishedStruts != computedStruts) { + m_publishedStruts = computedStruts; + m_wm->setViewStruts(*m_latteView, m_publishedStruts, m_latteView->location()); + qDebug() << "STRUTS :::: " << computedStruts; + } } else { m_wm->removeViewStruts(*m_latteView); } } +QRect VisibilityManager::acceptableStruts() +{ + QRect calcs; + + switch (m_latteView->location()) { + case Plasma::Types::TopEdge: { + calcs = QRect(m_latteView->x(), m_latteView->y(), m_latteView->width(), m_latteView->normalThickness()); + break; + } + + case Plasma::Types::BottomEdge: { + int y = m_latteView->y() + m_latteView->height() - m_latteView->normalThickness(); + calcs = QRect(m_latteView->x(), y, m_latteView->width(), m_latteView->normalThickness()); + break; + } + + case Plasma::Types::LeftEdge: { + calcs = QRect(m_latteView->x(), m_latteView->y(), m_latteView->normalThickness(), m_latteView->height()); + break; + } + + case Plasma::Types::RightEdge: { + int x = m_latteView->x() + m_latteView->width() - m_latteView->normalThickness(); + calcs = QRect(x, m_latteView->y(), m_latteView->normalThickness(), m_latteView->height()); + break; + } + } + + return calcs; +} + bool VisibilityManager::raiseOnDesktop() const { return m_raiseOnDesktopChange; diff --git a/app/view/visibilitymanager.h b/app/view/visibilitymanager.h index de1bee504..2d5a42790 100644 --- a/app/view/visibilitymanager.h +++ b/app/view/visibilitymanager.h @@ -145,6 +145,8 @@ private: void updateStrutsBasedOnLayoutsAndActivities(); void viewEventManager(QEvent *ev); + QRect acceptableStruts(); + private slots: void dodgeAllWindows(); void dodgeActive(); @@ -168,6 +170,8 @@ private: bool m_raiseOnActivityChange{false}; bool m_hideNow{false}; + QRect m_publishedStruts; + //! KWin Edges bool m_enableKWinEdgesFromUser{true}; std::array m_connectionsKWinEdges;