make sure all space is assigned when screen res changes

it was possible to meake applets overlap after a screen resolution
change
wilder-5.17
Marco Martin 7 years ago
parent 5d041877ef
commit fe6ab64089
  1. 10
      components/containmentlayoutmanager/gridlayoutmanager.cpp

@ -76,7 +76,7 @@ bool GridLayoutManager::itemIsManaged(ItemContainer *item)
return m_pointsForItem.contains(item);
}
inline void maintainItemEdgeAlignment(QQuickItem *item, const QRectF &newRect, const QRectF &oldRect)
inline void maintainItemEdgeAlignment(ItemContainer *item, const QRectF &newRect, const QRectF &oldRect)
{
const qreal leftDist = item->x() - oldRect.x();
const qreal hCenterDist = item->x() + item->width()/2 - oldRect.center().x();
@ -112,7 +112,13 @@ void GridLayoutManager::layoutGeometryChanged(const QRectF &newGeometry, const Q
// Stash the old config
//m_parsedConfig[item->key()] = {item->x(), item->y(), item->width(), item->height(), item->rotation()};
// Move the item to maintain the distance with the anchors point
maintainItemEdgeAlignment(item, newGeometry, oldGeometry);
auto *itemCont = qobject_cast<ItemContainer *>(item);
if (itemCont && itemCont != layout()->placeHolder()) {
maintainItemEdgeAlignment(itemCont, newGeometry, oldGeometry);
// NOTE: do not use positionItemAndAssign here, because we do not want to emit layoutNeedsSaving, to not save after resize
positionItem(itemCont);
assignSpaceImpl(itemCont);
}
}
}

Loading…
Cancel
Save