quicktiling: Reset layout when last quicktile ceases to exist
To not preserve invisible splits, last quicktile is differentiated per split axis. BUG: 465937
This commit is contained in:
parent
fa4b75804b
commit
d4152fafbd
2 changed files with 29 additions and 0 deletions
|
@ -28,6 +28,7 @@ QuickRootTile::QuickRootTile(TileManager *tiling, Tile *parentItem)
|
||||||
connect(tile, &Tile::relativeGeometryChanged, this, [this, tile]() {
|
connect(tile, &Tile::relativeGeometryChanged, this, [this, tile]() {
|
||||||
relayoutToFit(tile);
|
relayoutToFit(tile);
|
||||||
});
|
});
|
||||||
|
connect(tile, &Tile::windowRemoved, this, &QuickRootTile::tryReset);
|
||||||
|
|
||||||
return std::unique_ptr<Tile>(tile);
|
return std::unique_ptr<Tile>(tile);
|
||||||
};
|
};
|
||||||
|
@ -209,6 +210,33 @@ void QuickRootTile::setVerticalSplit(qreal split)
|
||||||
m_bottomRightTile->setRelativeGeometry(geom);
|
m_bottomRightTile->setRelativeGeometry(geom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuickRootTile::tryReset()
|
||||||
|
{
|
||||||
|
if (!m_topLeftTile->windows().isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_topRightTile->windows().isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_bottomLeftTile->windows().isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!m_bottomRightTile->windows().isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_leftVerticalTile->windows().isEmpty() && m_rightVerticalTile->windows().isEmpty()) {
|
||||||
|
setHorizontalSplit(0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_topHorizontalTile->windows().isEmpty() && m_bottomHorizontalTile->windows().isEmpty()) {
|
||||||
|
setVerticalSplit(0.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace KWin
|
} // namespace KWin
|
||||||
|
|
||||||
#include "moc_quicktile.cpp"
|
#include "moc_quicktile.cpp"
|
||||||
|
|
|
@ -34,6 +34,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void relayoutToFit(Tile *tile);
|
void relayoutToFit(Tile *tile);
|
||||||
|
void tryReset();
|
||||||
|
|
||||||
Tile *m_resizedTile = nullptr;
|
Tile *m_resizedTile = nullptr;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue