forked from qt-creator/qt-creator
QmlDesigner: Make selection indiactor ignore zoom
We have to use ItemIgnoresTransformations and calculate the correct position. SelectionIndicator::updateItems() is called when the zoom is changed. Change-Id: Id3e9d643b20c15c831a4e2d8ac72eea15a6b0d1f Reviewed-by: Aleksei German <aleksei.german@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -139,10 +139,12 @@ void SelectionIndicator::setItems(const QList<FormEditorItem*> &itemList)
|
|||||||
QPointF pos = labelRect.topLeft();
|
QPointF pos = labelRect.topLeft();
|
||||||
labelRect.moveTo(0, 0);
|
labelRect.moveTo(0, 0);
|
||||||
m_labelItem->setPolygon(labelRect);
|
m_labelItem->setPolygon(labelRect);
|
||||||
m_labelItem->setPos(pos + QPointF(0, -labelHeight));
|
const int scaledHeight = labelHeight / m_layerItem->viewportTransform().m11();
|
||||||
|
m_labelItem->setPos(pos + QPointF(0, -scaledHeight));
|
||||||
const int offset = (labelHeight - textItem->boundingRect().height()) / 2;
|
const int offset = (labelHeight - textItem->boundingRect().height()) / 2;
|
||||||
textItem->setPos(QPointF(toolbar->size().width(), offset));
|
textItem->setPos(QPointF(toolbar->size().width(), offset));
|
||||||
m_labelItem->setFlag(QGraphicsItem::ItemIsSelectable, false);
|
m_labelItem->setFlag(QGraphicsItem::ItemIsSelectable, false);
|
||||||
|
m_labelItem->setFlag(QGraphicsItem::ItemIgnoresTransformations, true);
|
||||||
QPen pen;
|
QPen pen;
|
||||||
pen.setCosmetic(true);
|
pen.setCosmetic(true);
|
||||||
pen.setWidth(2);
|
pen.setWidth(2);
|
||||||
@@ -170,7 +172,8 @@ void SelectionIndicator::updateItems(const QList<FormEditorItem*> &itemList)
|
|||||||
QPolygonF labelPolygon = boundingRectInLayerItemSpaceForItem(selectedItem, m_layerItem.data());
|
QPolygonF labelPolygon = boundingRectInLayerItemSpaceForItem(selectedItem, m_layerItem.data());
|
||||||
QRectF labelRect = labelPolygon.boundingRect();
|
QRectF labelRect = labelPolygon.boundingRect();
|
||||||
QPointF pos = labelRect.topLeft();
|
QPointF pos = labelRect.topLeft();
|
||||||
m_labelItem->setPos(pos + QPointF(0, -labelHeight));
|
const int scaledHeight = labelHeight / m_layerItem->viewportTransform().m11();
|
||||||
|
m_labelItem->setPos(pos + QPointF(0, -scaledHeight));
|
||||||
m_layerItem->update();
|
m_layerItem->update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user