consider mask thickness for struts

pull/6/head
Michail Vourlakos 6 years ago
parent fd9025f632
commit a4764024db

@ -193,6 +193,36 @@ void Effects::setSettingsMaskSubtracted(bool enabled)
emit settingsMaskSubtractedChanged();
}
int Effects::maskThickness() const
{
if (m_view->mask().isEmpty()) {
return m_view->formFactor() == Plasma::Types::Horizontal ? m_view->width() : m_view->height();
}
switch (m_view->location()) {
case Plasma::Types::TopEdge:
return m_view->mask().boundingRect().bottom();
break;
case Plasma::Types::LeftEdge:
return m_view->mask().boundingRect().right();
break;
case Plasma::Types::RightEdge:
return m_view->mask().boundingRect().left();
break;
case Plasma::Types::BottomEdge:
return m_view->mask().boundingRect().top();
break;
default:
return 64;
break;
}
}
QRegion Effects::subtrackedMaskFromWindow(QRegion initialRegion, QQuickView *window)
{
QRegion subtractedMask = initialRegion;

@ -83,6 +83,8 @@ public:
int innerShadow() const;
void setInnerShadow(int shadow);
int maskThickness() const;
QRect mask() const;
void setMask(QRect area);

@ -21,6 +21,7 @@
#include "visibilitymanager.h"
// local
#include "effects.h"
#include "positioner.h"
#include "screenedgeghostwindow.h"
#include "view.h"
@ -267,26 +268,28 @@ QRect VisibilityManager::acceptableStruts()
{
QRect calcs;
int visibleThickness = qMin(m_latteView->effects()->maskThickness(), m_latteView->normalThickness());
switch (m_latteView->location()) {
case Plasma::Types::TopEdge: {
calcs = QRect(m_latteView->x(), m_latteView->y(), m_latteView->width(), m_latteView->normalThickness());
calcs = QRect(m_latteView->x(), m_latteView->y(), m_latteView->width(), visibleThickness);
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());
int y = m_latteView->y() + m_latteView->height() - visibleThickness;
calcs = QRect(m_latteView->x(), y, m_latteView->width(), visibleThickness);
break;
}
case Plasma::Types::LeftEdge: {
calcs = QRect(m_latteView->x(), m_latteView->y(), m_latteView->normalThickness(), m_latteView->height());
calcs = QRect(m_latteView->x(), m_latteView->y(), visibleThickness, 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());
int x = m_latteView->x() + m_latteView->width() - visibleThickness;
calcs = QRect(x, m_latteView->y(), visibleThickness, m_latteView->height());
break;
}
}

Loading…
Cancel
Save