Deal in terms of LastPositions instead of the individual position

Just a refactoring to add more encapsulation
This commit is contained in:
Sergio Martins
2020-05-21 17:43:51 +01:00
parent 50934ae56d
commit 9779b8edc3
8 changed files with 61 additions and 29 deletions

View File

@@ -382,7 +382,8 @@ QString DockWidgetBase::affinityName() const
void DockWidgetBase::show()
{
if (isWindow() && (lastPosition()->m_wasFloating || !lastPosition()->isValid())) {
LastPositions lastPositions = this->lastPositions();
if (isWindow() && (lastPositions.wasFloating() || !lastPositions.isValid())) {
// Create the FloatingWindow already, instead of waiting for the show event.
// This reduces flickering on some platforms
morphIntoFloatingWindow();
@@ -428,7 +429,7 @@ FloatingWindow *DockWidgetBase::morphIntoFloatingWindow()
return fw; // Nothing to do
if (isWindow()) {
QRect geo = lastPosition()->lastFloatingGeometry();
QRect geo = lastPositions().lastFloatingGeometry();
if (geo.isNull()) {
geo = geometry();
const QPoint center = d->defaultCenterPosForFloating();
@@ -477,9 +478,9 @@ void DockWidgetBase::addPlaceholderItem(Layouting::Item *item)
d->m_lastPositions.addPosition(item);
}
Position::Ptr DockWidgetBase::lastPosition() const
LastPositions DockWidgetBase::lastPositions() const
{
return d->m_lastPositions.lastPosition;
return d->m_lastPositions;
}
QPoint DockWidgetBase::Private::defaultCenterPosForFloating()