mirror of
https://github.com/KDE/latte-dock.git
synced 2025-02-02 21:47:22 +03:00
fix vertical docks/panels positioning
--identify correctly for vertical panels in right edge when they need to draw or not their top and bottom borders. This is enough in order to position properly these docks. BUG:448519 FIXED-IN:0.10.8
This commit is contained in:
parent
ec62b36018
commit
6fa1d1cc87
@ -612,7 +612,7 @@ QRegion Corona::availableScreenRegionWithCriteria(int id,
|
||||
break;
|
||||
|
||||
case Latte::Types::Right:
|
||||
x = view->geometry().right() - w - offsetW;
|
||||
x = view->geometry().right() + 1 - w - offsetW;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -587,7 +587,6 @@ void Positioner::immediateSyncGeometry()
|
||||
}
|
||||
|
||||
validateTopBottomBorders(availableScreenRect, freeRegion);
|
||||
|
||||
m_lastAvailableScreenRegion = freeRegion;
|
||||
} else {
|
||||
m_view->effects()->setForceTopBorder(false);
|
||||
@ -674,7 +673,8 @@ void Positioner::validateTopBottomBorders(QRect availableScreenRect, QRegion ava
|
||||
|
||||
if (availableScreenRect.top() != m_view->screenGeometry().top()) {
|
||||
//! check top border
|
||||
QRegion fitInRegion = QRect(m_view->screenGeometry().x(), availableScreenRect.y()-1, edgeMargin, 1);
|
||||
int x = m_view->location() == Plasma::Types::LeftEdge ? m_view->screenGeometry().x() : m_view->screenGeometry().right();
|
||||
QRegion fitInRegion = QRect(x, availableScreenRect.y()-1, edgeMargin, 1);
|
||||
QRegion subtracted = fitInRegion.subtracted(availableScreenRegion);
|
||||
|
||||
if (subtracted.isNull()) {
|
||||
@ -690,7 +690,8 @@ void Positioner::validateTopBottomBorders(QRect availableScreenRect, QRegion ava
|
||||
|
||||
if (availableScreenRect.bottom() != m_view->screenGeometry().bottom()) {
|
||||
//! check top border
|
||||
QRegion fitInRegion = QRect(m_view->screenGeometry().x(), availableScreenRect.bottom()+1, edgeMargin, 1);
|
||||
int x = m_view->location() == Plasma::Types::LeftEdge ? m_view->screenGeometry().x() : m_view->screenGeometry().right();
|
||||
QRegion fitInRegion = QRect(x, availableScreenRect.bottom()+1, edgeMargin, 1);
|
||||
QRegion subtracted = fitInRegion.subtracted(availableScreenRegion);
|
||||
|
||||
if (subtracted.isNull()) {
|
||||
|
@ -301,6 +301,16 @@ void View::init(Plasma::Containment *plasma_containment)
|
||||
connect(this, &View::activitiesChanged, this, &View::applyActivitiesToWindows);
|
||||
connect(m_positioner, &ViewPart::Positioner::winIdChanged, this, &View::applyActivitiesToWindows);
|
||||
|
||||
connect(this, &View::alignmentChanged, this, [&](){
|
||||
// inform neighbour vertical docks/panels to adjust their positioning
|
||||
if (m_inDelete || formFactor() == Plasma::Types::Vertical) {
|
||||
return;
|
||||
}
|
||||
|
||||
emit availableScreenRectChangedFrom(this);
|
||||
emit availableScreenRegionChangedFrom(this);
|
||||
});
|
||||
|
||||
connect(this, &View::maxLengthChanged, this, [&]() {
|
||||
if (m_inDelete) {
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user