From ea88cb57a3bee1fca73df0732a2259c07f5e0dd5 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sun, 16 Jan 2022 01:43:34 +0200 Subject: [PATCH] position kwinedgehelper properly after startup BUG:448433 FIXED-IN:0.10.8 --- app/view/helpers/screenedgeghostwindow.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/view/helpers/screenedgeghostwindow.cpp b/app/view/helpers/screenedgeghostwindow.cpp index 35dc902f2..7e500b30c 100644 --- a/app/view/helpers/screenedgeghostwindow.cpp +++ b/app/view/helpers/screenedgeghostwindow.cpp @@ -7,6 +7,7 @@ // local #include "../view.h" +#include "../positioner.h" // Qt #include @@ -41,6 +42,8 @@ ScreenEdgeGhostWindow::ScreenEdgeGhostWindow(Latte::View *view) : setColor(m_showColor); + connect(m_latteView->positioner(), &Latte::ViewPart::Positioner::slideOffsetChanged, this, &ScreenEdgeGhostWindow::updateGeometry); + //! this timer is used in order to avoid fast enter/exit signals during first //! appearing after edge activation m_delayedMouseTimer.setSingleShot(true); @@ -95,12 +98,12 @@ void ScreenEdgeGhostWindow::updateGeometry() if (m_latteView->formFactor() == Plasma::Types::Horizontal) { int leftF = qMax(m_latteView->screenGeometry().left(), m_latteView->absoluteGeometry().left() - lengthDifference); - int rightF = qMin(m_latteView->screenGeometry().right(), m_latteView->absoluteGeometry().right() + lengthDifference); + int rightF = qMax(m_latteView->screenGeometry().left(), qMin(m_latteView->screenGeometry().right(), m_latteView->absoluteGeometry().right() + lengthDifference)); newGeometry.setLeft(leftF); newGeometry.setRight(rightF); } else { int topF = qMax(m_latteView->screenGeometry().top(), m_latteView->absoluteGeometry().top() - lengthDifference); - int bottomF = qMin(m_latteView->screenGeometry().bottom(), m_latteView->absoluteGeometry().bottom() + lengthDifference); + int bottomF = qMax(m_latteView->screenGeometry().top(), qMin(m_latteView->screenGeometry().bottom(), m_latteView->absoluteGeometry().bottom() + lengthDifference)); newGeometry.setTop(topF); newGeometry.setBottom(bottomF); }